各位高手,本人编制了一个程序的使用说明,是*.chm格式的,想和程序的可执行文件放在一起,怎么样实现,当使用者按下F1时,就调用帮助文档阿?和vc的msdn一样的功能。
    大侠请指教!!!!
    还有啊,如果想把*.chm放在install sheild中,怎么加阿?

解决方案 »

  1.   

    你重载主窗口的WinHelp函数,然后修改函数内容为
    ShellExecute(GetSafeHwnd(), NULL, sHelpFile, NULL, NULL, SW_SHOWMAXIMIZED);
    ==========================================================
    ZZZZZZZZZZZZzzzzzzz~~~~~~~~~~
      

  2.   

    void CSLCCXPDlg::OnAppHelp() 
    {
    CString strHelp;
    CString dir(AfxGetApp()->m_pszHelpFilePath);
    strHelp = dir + _T("\\xxx.chm");
    ShellExecute(GetSafeHwnd(), "open", strHelp, NULL, NULL, SW_SHOWMAXIMIZED);
    }
    //and you may translate F1 message
      

  3.   

    //.h
    afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo );
    -------------------------------------------------
    //.cpp
    void GetAppPath(CString &appPath)
    {
    char Path[_MAX_PATH];
    char *pCh; GetModuleFileName(NULL, Path, sizeof(Path));
    pCh = strrchr(Path, '\\');
    if(NULL != pCh) *pCh = 0; appPath.Format("%s", Path);
    }
    BOOL CXXDlg::OnHelpInfo(HELPINFO* pHelpInfo )
    {
        
            CString strDir;        GetAppPath( strDir );
            strDir += "XXX.chm";        if( GetFileAttributes( strDir ) != 0xFFFFFFFF )
            {
                ShellExecute( NULL, "open", strDir, NULL, NULL, SW_SHOWNORMAL );
            }
            else
            { 
                AfxMessageBox( "Cann't find the help file" );
            }    
            return TRUE;
    }
      

  4.   

    最简单的办法是对ID_HELP进行消息映射,即重载CWinApp::OnHelp,然后调用::ShellExec或WinHelp如下:BEGIN_MESSAGE_MAP(CMainCtrlApp, CWinApp)
    //{{AFX_MSG_MAP(CMainCtrlApp)  
    ON_COMMAND(ID_HELP, OnHelp)   //响应F1键
    //}}AFX_MSG_MAP

    END_MESSAGE_MAP()
    //响应F1键
    void CMyApp::OnHelp()
    {
       ShellExecute(NULL, cMyHelpChm, NULL, NULL, SW_SHOWMAXIMIZED);
    }