• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            brent's hut

            VC程序使用chm幫助文件

            ?? 最近在做一個(gè)安裝程序。想要弄一個(gè)上下文相關(guān)幫助。
            ??? 一開始想用vc6自帶的上下文相關(guān)幫助。在建立工程的時(shí)候選擇context-sensitive help即可。嗯,vc幫我創(chuàng)建了AfxDlg.rtf、setup.cnt、setup.hm、setup.hpj、setup.ph等文件,以為省事了,用word打開AfxDlg.rtf一看,完全不會(huì)編輯。看了《inside visual c++》里面的文章,還是一頭霧水。
            ??? winhelp這老掉牙的東西,在win98年代就被htmlhelp淘汰了,俺還用它干嘛?決定棄暗投明,使用html help workshop來做幫助。html help workshop是一款制作chm文件的工具,微軟免費(fèi)提供,到處有的下。使用起來也方便,比編輯rtf格式要方便多得多,基本方法是把制作好的網(wǎng)頁往里面塞,不浪費(fèi)口舌了。

            ??? 用html help workshop制作chm是方便,關(guān)鍵是怎么讓它可以"上下文相關(guān)"。程序里調(diào)用chm幫組文件的api是
            ??? HWND HtmlHelp(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD dwData);?
            ??? 更改App類的WinHelp()方法如下:
            ?void CSetupApp::WinHelp(DWORD dwData, UINT nCmd)
            ?{
            ? ::HtmlHelp(NULL, "E:\\workshop\\setup\\hlp\\chmtest.chm", HH_HELP_CONTEXT, dwData);
            ?}
            ??? 具體文件在哪需要具體分析。這里要說的是這個(gè)dwData可是很有來頭的,設(shè)個(gè)斷點(diǎn)就可以看個(gè)清楚了:
            ?ID_HELP命令的消息路徑是:
            ?CWnd::OnWndMsg()
            ?CDialog::OnCommandHelp()
            ?LRESULT CDialog::OnCommandHelp(WPARAM, LPARAM lParam)
            ?{
            ? if (lParam == 0 && m_nIDHelp != 0)
            ?? lParam = HID_BASE_RESOURCE + m_nIDHelp;//m_nIDHelp就是你的對(duì)話框的id哦
            ? if (lParam != 0)
            ? {
            ?? CWinApp* pApp = AfxGetApp();
            ?? if (pApp != NULL)
            ??? pApp->WinHelp(lParam);//
            ?? return TRUE;
            ? }
            ? return FALSE;
            ?}
            ?
            如何寫CHM:
            ??? 現(xiàn)在要做的就是把dwData和想要顯示的東西關(guān)聯(lián)起來。
            ?具體方法是:
            ?1、使用記事本建立一個(gè)文本文件,文件名為Map.h。在該文件中輸入下面的內(nèi)容:
            ?#define TOPIC1 100
            ?#define TOPIC2 200
            ?這里TOPIC1、TOPIC2是一些常量,100、200是你在API調(diào)用時(shí)指定的ContextID。
            ?2、在HTMLHelp Workshop中選擇Project標(biāo)簽,點(diǎn)擊HtmlHelp API information按鈕,在對(duì)話框的Map標(biāo)簽中選擇Header File按鈕,然后選擇你前面建立的Map.h文件。
            ?3、還是在HtmlHelp API information對(duì)話框中選擇Alias標(biāo)簽,點(diǎn)擊Add按鈕,在對(duì)話框中的Whenever This Constant or number is passed to the HTMLHelp API下輸入常量,如TOPIC1。
            ?4、在Use it to Refer to This HTML File中選擇HTML文件,如Topic1.html。
            ?5、重復(fù)3、4兩步指定所有文件。
            ?6、編譯文件就可以了。
            ?(轉(zhuǎn)自http://www.china-askpro.com/msg44/qa78.shtml
            ?具體的ContextID不是100,200啊,是HID_BASE_RESOURCE+對(duì)話框ID。
            ?查找一下發(fā)現(xiàn):#define HID_BASE_RESOURCE 0x00020000UL ,如果你的對(duì)話框ID值是0x0102那就該
            ?#define MYDLGID 0x20102了。
            注:// Help ID bases(afxpriv.h)
            #define HID_BASE_COMMAND??? 0x00010000UL??????? // ID and IDM
            #define HID_BASE_RESOURCE?? 0x00020000UL??????? // IDR and IDD
            #define HID_BASE_PROMPT???? 0x00030000UL??????? // IDP
            #define HID_BASE_NCAREAS??? 0x00040000UL
            #define HID_BASE_CONTROL??? 0x00050000UL??????? // IDC
            #define HID_BASE_DISPATCH?? 0x00060000UL??????? // IDispatch help codes
            ?
            如何調(diào)用HtmlHelp:
            ???微軟在提供html help workshop的時(shí)候提供了調(diào)用方法,就是在html help workshop的安裝目錄下提供了個(gè)頭文件和靜態(tài)庫,這個(gè)庫的作用是裝載hhctrl.ocx(system32目錄下),調(diào)用其中真正的htmlhelp方法。具體見:
            ?http://www.yesky.com/SoftChannel/72342376173010944/20010409/165483.shtml

            posted on 2005-12-19 09:30 brent 閱讀(1988) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows

            久久久国产精华液| 色综合久久中文字幕综合网| 狠狠色丁香久久综合婷婷| 2021久久国自产拍精品| 国产精品热久久毛片| 免费精品久久天干天干| 久久国产精品久久精品国产| 日本精品久久久久影院日本| 久久99精品国产自在现线小黄鸭| 青青青青久久精品国产| 久久精品国产亚洲av麻豆蜜芽| 青青草原综合久久大伊人精品| 国产欧美久久久精品影院| 国内精品久久久久影院网站| AV色综合久久天堂AV色综合在| 久久99久久成人免费播放| 久久久久久久久久久久中文字幕 | 久久香蕉综合色一综合色88| 无码任你躁久久久久久| 狠狠色丁香久久婷婷综| 精品久久亚洲中文无码| 色悠久久久久久久综合网| 97久久超碰国产精品2021| 99蜜桃臀久久久欧美精品网站| 久久人人爽人人澡人人高潮AV | 日韩乱码人妻无码中文字幕久久 | 国产成人精品久久| 久久久无码人妻精品无码| 亚洲国产成人久久一区久久| 91久久国产视频| 香港aa三级久久三级| 97精品国产91久久久久久| 久久99精品久久久久久hb无码| 性高湖久久久久久久久| 精品一二三区久久aaa片| 国产免费久久精品99re丫y| 久久久久久久免费视频| 色婷婷噜噜久久国产精品12p| 久久精品国产只有精品66| 久久精品国产一区二区三区不卡 | 亚洲国产精品无码久久|