|
|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
. M6 ]3 ]- j9 p R; u) }0 e# Q- V% J, [
一、软件中对CHM帮助文档的调用方法' ^; @+ \ f, ?. F# ]+ _
$ [6 k% F& A0 X% z/ `6 I
VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。- u: F Y% s$ l# g7 P6 u
系统包含文件如下: % d2 L# e/ ~! M4 }" _0 R
. }0 A8 h6 b( w( A: k% n' ^
- #include "CHMHelp.h"0 Q' n. Z& R7 B: a* A& ~4 _
- ; c5 T: z9 z3 m* s. s
- BOOL CDataDlg::OnInitDialog()
2 E" V4 ~( O$ r; x' \ - {
8 z5 `6 u6 R! h8 ~% V! [. h - CDialog::OnInitDialog();9 m* S) P" r* c0 u, x0 n" O( V# \% M* i% D
- SetWindowContextHelpId(IDH_WJH_0300702025);; i2 \) j; k. }2 T
- return TRUE;- H6 F; i. V+ K1 n1 H/ ~: [% A
- }
复制代码 1 k' E" S4 q: p! r# O1 @
上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo) 7 L( u* B b7 k7 F
- {
+ q( c$ ~- C( k - HWND hWnd;$ w3 C- W$ j: ?" Y& q: N% |/ Z
- if(pHelpInfo->dwContextId > 0)
4 _+ O- U; j7 U5 e( ?; v9 C# M/ c" [$ } - hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, ! q2 K1 m# Q" O( j% n
- theApp.m_szHelpFile, # e! n& H) D. j! R# X
- HH_HELP_CONTEXT, % {" l6 f+ m! q3 b( J1 R9 l. {
- pHelpInfo->dwContextId);
* y* ^1 f0 M7 i% K - else * `2 W9 W; {8 ]1 X5 B& ]2 ~% ]
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
1 A% M2 |( s! y7 U, s6 l8 } - theApp.m_szHelpFile, 6 O( o7 w; f! |: L# e
- HH_HELP_CONTEXT,
! X: L5 J, |! C+ r' z/ Y - IDH_WJH_0100000000);
) z- R8 n) i' K
% v2 w" C. e" J3 q$ ?: R) E- return (hWnd != NULL);% V7 x1 s; N [6 U
- return CMDIFrameWnd::OnHelpInfo(pHelpInfo);, C& Q2 ?' n& ?( a- W$ `) ]
- }
复制代码
& Q7 ~/ X/ u$ i! m+ `" I0 k 上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 ' p6 i+ L- s4 C* W7 T7 I2 [3 L) V
二、CHM帮助文档的制作要求 ( Y7 C1 _" e% U3 b9 }4 w
' v4 x1 K6 ^2 \3 X4 r2 E
CHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: \" ~, C# o- X" ]; j p0 V) {6 H: ^
; ]; V- n8 ^/ J" P4 x8 m& RCHMHelpID.h 页面ID文件格式:
/ {* r! A+ G7 q8 y$ H$ n) U- }* [#define IDH_WJH_0000000000 00 ?. n6 x. N& M6 ?7 d, z B
#define IDH_WJH_0100000000 100000000
2 V- d) i5 J, h; R: ?#define IDH_WJH_0100100000 100100000
% k2 ^8 X/ S/ t5 Z' M f N#define IDH_WJH_0100101000 100101000; r, K; g4 r ?3 e8 @* y
' \' I$ N( {& O% r
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm
- v- Y! M. z) N- o2 a: |$ N( }" m4 LIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
! P! F/ @0 C, V. B+ ~; \$ cIDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm
6 m- E: R7 F7 gIDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm
) A0 I! u6 z- M! l- jIDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm3 \9 o3 J) d1 g% k3 ~
' M4 h" l2 X+ V$ z 编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|