|
|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
3 g4 m! h+ v; C) X% {9 L/ v6 \( I! c6 \/ J7 L/ @! L* P$ e C
一、软件中对CHM帮助文档的调用方法( P9 j- c: Z! b& {& ~9 H7 U/ g6 n
; r! y+ J3 v; f" c% h VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。 e" l" |+ @4 q( m* x
系统包含文件如下:
9 V& y: W3 L( H9 f: f7 v) _
) x3 c) }/ b! v5 L: T- #include "CHMHelp.h"
: g0 b3 N! a* J8 M. X
+ `: s! U- {, X& Q+ v- BOOL CDataDlg::OnInitDialog()
4 o! M4 i% O/ p3 p - {
# H; |& B; E5 m/ T( T% n$ k$ W - CDialog::OnInitDialog();
; ~3 z, H! F. e0 L" X7 s, S3 U1 b. j' f - SetWindowContextHelpId(IDH_WJH_0300702025);- V( O6 L7 \# _$ A" i
- return TRUE;
" T2 d' t& l [ - }
复制代码 : [. n2 v& W3 C2 J+ R4 |
上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
5 Z: C3 w3 L% P( T+ R# ~1 O - {
7 f" f' p6 A) G: Y$ h$ l - HWND hWnd;
6 v, k; N6 k* a0 }0 R - if(pHelpInfo->dwContextId > 0) 4 G) x- z7 J% w9 [. j
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
; _* e5 G- Z( r1 i* V" K - theApp.m_szHelpFile, ) y6 U B. J# R7 ~
- HH_HELP_CONTEXT, 8 j0 c) g% `9 R s% S
- pHelpInfo->dwContextId);) T0 U) p+ K0 p$ z3 ?
- else 9 M: @/ d. v$ f _5 K) f
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, + Y! m0 ]# A) u4 \0 ~
- theApp.m_szHelpFile,
- N O2 l8 |0 f; K" ?# L - HH_HELP_CONTEXT, ' C, o9 ]$ Q+ a! w: E& y7 |
- IDH_WJH_0100000000);( O% e o% b G% p, s ]
' H) O: O% g. y- return (hWnd != NULL);/ g. {" r# W S# U1 X
- return CMDIFrameWnd::OnHelpInfo(pHelpInfo); }! u! G& a) f$ o: _$ [9 ?
- }
复制代码 $ a& c; W1 t9 {
上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。
. J/ u* ^* S; K" a( |( {二、CHM帮助文档的制作要求 ! y! l+ y) F0 i" ^8 J S( ]
3 N* \1 A2 \+ J. i
CHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下:
* v" K! [$ u( q/ V' {9 B% J/ T$ D+ [
CHMHelpID.h 页面ID文件格式:
4 P, g, D. N5 Z* K3 o; \( u#define IDH_WJH_0000000000 0; D9 |. q4 t4 L" T: a
#define IDH_WJH_0100000000 100000000- Q7 o* H4 Z2 \% |# v2 Z. h
#define IDH_WJH_0100100000 1001000000 N8 T& X. u: F, K1 D8 `# ^9 C
#define IDH_WJH_0100101000 100101000' A3 L! n4 b/ m; U) B+ A
) v' X- s1 R1 k9 ZAliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm
& a$ I4 ]3 N8 F0 u6 h* a' GIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm3 c2 {8 J* e) z' G
IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm* d8 h- o; z" R$ Z; K7 G0 W
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm5 U1 m( d+ M4 E: Q! r4 L3 c$ q l
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm e5 m' \! }; S# _
3 N. n# j! P) N) X4 I6 p
编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|