|
|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
) N7 W- B9 x' Z/ _/ B$ p/ A% P9 u f( V% u
一、软件中对CHM帮助文档的调用方法
- a6 r- o1 Q9 l0 q0 t' U# }6 J# ~( J( i( d9 N
VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。, ?- ]: N7 R) f: U b3 W& |
系统包含文件如下:
$ ]/ M- f9 j* g3 e- T
/ Q, x7 P# K1 R7 C; I- #include "CHMHelp.h") V% G# q/ P' y1 W$ R& q' Q
3 t3 A$ o- N3 ]3 x B+ |4 r9 n- BOOL CDataDlg::OnInitDialog() 3 U) o. \, f7 G9 b v$ @( V! L. O
- {
. e- t5 \5 n: _2 h3 i8 s& R - CDialog::OnInitDialog();9 }4 M& v1 ^* }! l
- SetWindowContextHelpId(IDH_WJH_0300702025);
2 v5 o( J9 D5 P - return TRUE;
9 f( X. W$ l6 F7 E2 a8 W - }
复制代码
5 [% y9 z( A1 B: R j 上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
, ?, {* Z3 R% K- J1 v- i+ F7 p - {' `( E4 T- N: c* v0 U( s k4 R
- HWND hWnd;# I4 l6 {* V8 Z, t; F
- if(pHelpInfo->dwContextId > 0)
( j6 [1 y6 M. z9 [ - hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
3 w5 B5 E( \5 O, A" t+ q - theApp.m_szHelpFile, , v( ?5 @& q6 z; J
- HH_HELP_CONTEXT, ! r7 B. _/ N1 v0 }6 |7 r
- pHelpInfo->dwContextId);6 S' f% ]& O) _
- else
( j) S. a) i8 ]& v( p6 f1 \$ n$ { - hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
0 _: Y! s% n) M% | - theApp.m_szHelpFile, 6 l! C1 _/ M4 [( A$ S+ H
- HH_HELP_CONTEXT, ; C X7 w7 Z2 V9 m
- IDH_WJH_0100000000);0 r& x. [; ?; b8 r, Y4 V) P7 \
' i! N6 d( ^ x3 g4 {( t- return (hWnd != NULL);
4 U, m8 r; O" \ - return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
, w, }, B K5 {+ T) Y+ q - }
复制代码 $ R% W n* h( l" ~
上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 4 {9 e) E; Y& d' b! C
二、CHM帮助文档的制作要求 1 u2 q! Y( H8 S% l% ]1 B
% L$ |( |$ _4 f1 C3 C7 x/ lCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下:
0 H% T$ R) |8 _9 ?3 T' @0 R
7 Q7 N8 X* I t% k- t. S2 yCHMHelpID.h 页面ID文件格式:
" s+ Y7 [9 f9 I#define IDH_WJH_0000000000 0
9 v# c; E; H6 ]* y' l. A7 U#define IDH_WJH_0100000000 100000000$ N* b1 J) x* s) a3 C
#define IDH_WJH_0100100000 100100000
/ x1 |# L' {( ]9 P. Q, o#define IDH_WJH_0100101000 1001010000 `) f L+ Y# q2 S; N9 y/ @
+ ]7 P- w8 z4 h+ MAliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm5 G8 ?1 A; z" @; k$ D% f
IDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm9 n% q2 j5 v7 b K1 T/ a( u$ h8 [
IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm) }8 v T) \# r) {5 M) g
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm
7 ^- ]$ b. _) g# Z+ kIDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm
* J; g' I- C$ b d/ t4 m
7 k$ V% a% N5 f4 j% k& B 编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|