|
|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。: [/ y8 y1 [. X+ B8 |
3 ]8 Y/ Y1 z" o& S; L) z' Q2 t1 B一、软件中对CHM帮助文档的调用方法
1 R5 C* f6 d7 F+ g( u4 C3 i, Z6 A# [; F Q
VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。! D6 `8 u4 f1 C/ d) a
系统包含文件如下: 8 Z" N: \, H8 F) x3 Y1 r
$ `6 `: l$ n( L$ k& k; ~. p- #include "CHMHelp.h", _1 P6 |- {) Q5 r1 w5 i' \1 s
- 9 n# ~+ H( R: m1 _: F7 ?" y
- BOOL CDataDlg::OnInitDialog()
6 ~- C& Z, w# k% v! M - {
9 X- c$ P- G: l8 E6 [ N - CDialog::OnInitDialog();
2 I/ C- p4 h1 V, C - SetWindowContextHelpId(IDH_WJH_0300702025);, s. ~8 Z, j' o
- return TRUE;( d. f/ B% l& H6 i/ z8 S5 v J
- }
复制代码 # R5 @9 h S8 n4 b) Q2 W- o
上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo) $ v' g' Q/ G- e) S
- {4 U4 {; L0 {& ^6 ?! l$ J, G
- HWND hWnd;8 _, s7 ^$ V( {- c0 E& T0 V
- if(pHelpInfo->dwContextId > 0) % c! L# O) S9 @$ n( I" n7 o }7 F
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, 3 U1 r9 [/ X' a% r
- theApp.m_szHelpFile, 7 O) M: f/ [4 [7 Y% l! j
- HH_HELP_CONTEXT, + Z! o7 P5 {# s6 G I- V) P% _
- pHelpInfo->dwContextId);
- l8 ?7 R6 d* l) x% C- T9 Q7 g - else ( N, l! a" m5 h) w+ ^
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
: ?$ g1 J4 K% w7 ~ - theApp.m_szHelpFile,
( S- o, O3 s2 _6 R" c: [8 b - HH_HELP_CONTEXT, 6 F9 I: n D, Q7 t1 c
- IDH_WJH_0100000000);
0 B1 D( d% w# Y - ' N7 T3 v# X f* J8 F
- return (hWnd != NULL);& _% c/ A) X$ S8 J& [ @: E9 h
- return CMDIFrameWnd::OnHelpInfo(pHelpInfo);7 W l, k% e1 w
- }
复制代码 ! M: s. o( _! I+ g7 }7 y
上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 - Z7 E- c+ {' V4 F' _% E: d
二、CHM帮助文档的制作要求
' u$ e: z+ N1 G1 N0 e
. L+ a$ h* X3 G, k: F( t3 BCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: 8 Q: K) @3 V' S2 \# h. v
: O2 X* w9 e: |8 c+ P- x* @$ t! \CHMHelpID.h 页面ID文件格式:
. B3 [0 m: Z% }#define IDH_WJH_0000000000 0
3 u# Q N( v0 T& K1 _4 }#define IDH_WJH_0100000000 100000000& O* P0 X; K$ N: {
#define IDH_WJH_0100100000 100100000
$ a7 k* L. J* A% _+ H& r#define IDH_WJH_0100101000 100101000# P' q z: K& b1 b* Y6 s U
* A' s/ ~/ {, ~8 H ~% }AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm
$ e: y% e2 Q2 b* YIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
' W% m+ u+ y+ \4 [IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm: d! k$ O" e% p; a$ g) y G" p" x* l
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm/ c4 r- |! K9 ~8 B# W+ W
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm- } J0 @- h3 S. w3 t3 h
" z5 j! t6 m& k
编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|