|
초난감 님이 쓰신 글 :
: 도움말파일은 만들었구요
:
: 예를들어 1, 2, 3, 4 페이지를 만들었다 치구
:
: 1번프로그램에서 도움말 실행하면 1페이지
: 2번프로그램에서 도움말 실행하면 2페이지
: 3번프로그램에서 도움말 실행하면 3페이지
: 4번프로그램에서 도움말 실행하면 4페이지
:
: 로 바로 갈수있도록 링크를 걸고싶은데요
:
: 여기에서 막혀버렸거든요
:
: 계속봐도 잘 모르겠고
:
: C++빌더내에서 적용시킬수 있는 방법좀 알려주시면 너무 감사할거 같습니다
:
: 도와주세욧!!
This is what i'm doing to disply help file.
Don't forget to set, chm file should have this functionality as well.
//in main form
THelp *pHelp = THelp::Instance();
if (pHelp)
{
int iIndex = IDE_PAGE_1 ;//get map id number form chm file
pHelp->ShowContextHelp(GetDesktopWindow(),HH_HELP_CONTEXT, iIndex );
}
//header file
typedef HWND (WINAPI *FPHH) (HWND, LPCSTR, UINT,DWORD);
class THelp
{
public:
THelp();
THelp( const AnsiString sFile );
~THelp();
int ShowContextHelp(HWND hWnd, DWORD dwCommand, int iTopic );
void SetFileName(AnsiString filename) ;
static THelp* Instance();
private:
FPHH m_pHtmlHelp;
HINSTANCE m_hInst;
AnsiString m_sHelpName;
bool m_bInitFalied;
bool Initialize();
static THelp* m_pHelp;
};
//cpp file
#include <vcl.h>
#pragma hdrstop
#include "htmlhelp.h"
#include "Help.h"
#pragma package(smart_init)
THelp* THelp::m_pHelp = NULL;
//---------------------------------------------------------------------------
THelp::THelp( )
:m_bInitFalied(false)
{
Initialize( );
}
//---------------------------------------------------------------------------
THelp::THelp( const AnsiString sFile )
:m_bInitFalied(false)
, m_sHelpName(sFile)
{
Initialize( );
}
//---------------------------------------------------------------------------
THelp::~THelp()
{
if ( m_hInst )
::FreeLibrary(m_hInst);
}
//---------------------------------------------------------------------------
bool THelp::Initialize( )
{
m_bInitFalied = true;
m_hInst = LoadLibrary("HHCTRL.OCX");
if ( NULL == m_hInst )
return false;
m_pHtmlHelp = (FPHH)::GetProcAddress(m_hInst,"HtmlHelpA");
if ( m_pHtmlHelp == NULL )
{
::FreeLibrary(m_hInst);
m_hInst = NULL;
return false;
}
m_bInitFalied = false;
return true;
}
//---------------------------------------------------------------------------
int THelp::ShowContextHelp(HWND hWnd,DWORD dwCommand, int iTopic )
{
if ( m_bInitFalied )
return -1;
if ( (m_hInst == NULL || m_pHtmlHelp == NULL) && !Initialize() )
return -1;
m_pHtmlHelp(hWnd,m_sHelpName.c_str(), dwCommand/*HH_HELP_CONTEXT*/,iTopic);
return 0;
}
//---------------------------------------------------------------------------
void THelp::SetFileName(AnsiString filename)
{
m_sHelpName = filename;
}
//---------------------------------------------------------------------------
THelp* THelp::Instance()
{
if (m_pHelp == NULL)
{
m_pHelp = new THelp();
}
return m_pHelp;
}
|