|
|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。) T) J4 M, a$ W- A1 M/ ^
$ }+ b+ x" s& k/ L' j9 u: u* j
一、软件中对CHM帮助文档的调用方法
" ]5 e, k. I) Z P B7 f+ `3 u! C- E$ R! @
VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。
$ s7 g7 J- U7 I' J* P; P系统包含文件如下: ' O# ] h; h3 w3 @. z
% R. c2 V' ~4 F: P. N6 b, }0 V- #include "CHMHelp.h"
6 o) P5 S4 C& `8 j; V" V7 G
. m5 }# {9 V9 j1 O5 E- BOOL CDataDlg::OnInitDialog()
! o6 V8 C+ O7 l* h - {' v! D+ S& }! D3 G- ~0 \- T5 U+ z* S
- CDialog::OnInitDialog();
* G0 [% ~8 T( U# z6 x: w3 m$ e/ L - SetWindowContextHelpId(IDH_WJH_0300702025);
# T" A& D$ d& g* a# R7 u6 t* @! i - return TRUE;
) ?( W. D. R; E- |6 G; F - }
复制代码
# F: S# H* F# V9 Y 上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
; X5 G8 s5 i3 E6 X6 H7 H - {
3 V2 Q" Q# ~& T* N3 Q j3 K - HWND hWnd;
: S. ^1 Z' j1 }: I! B% O - if(pHelpInfo->dwContextId > 0) 0 U$ T4 L5 T$ ~! q* b
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
* o2 \* o8 C: x( S, V - theApp.m_szHelpFile, . C) J0 e* p, }- q- R+ m/ g3 Q
- HH_HELP_CONTEXT,
; U$ |" q3 }" o+ D) T/ S$ v - pHelpInfo->dwContextId);. b5 v: b" A: l2 Y
- else ! O; b+ `! M% ?2 p0 Z
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, 3 N1 `8 S n. ]9 Q* o
- theApp.m_szHelpFile,
( O; a* J! ^2 ^2 e) z* I5 P - HH_HELP_CONTEXT,
, Z, X0 r8 ~, n) m, P - IDH_WJH_0100000000);
/ |4 V; N1 ]( k" h4 ~) M
+ f' `- {3 s: F: B# t- return (hWnd != NULL);- }. H7 }# X5 C+ V' f, u7 ?
- return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
1 ~$ N* ~+ X2 U - }
复制代码 6 O$ ?" T, S6 Y" l! D# K# o: N
上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。 : q& {4 P; ?2 {
二、CHM帮助文档的制作要求 ( d+ |# K, J/ B& c: m. D$ A
# @* L; k7 k+ o: ~) uCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下: 9 s8 _8 F# _( `; p S5 a/ S
3 u0 ], e8 H3 h; gCHMHelpID.h 页面ID文件格式:
9 U. v+ |3 q) s _( q#define IDH_WJH_0000000000 0
" ?) r( l" w% f& P- _" {1 K#define IDH_WJH_0100000000 100000000/ ]& R. H( O# F* J
#define IDH_WJH_0100100000 100100000
+ y+ R: m u* [- x& E& Z: ?& Z#define IDH_WJH_0100101000 100101000+ H; M, [0 n- D% N; Z
" t5 Z( g- ], k( y6 E7 W+ t
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm
) z- H3 u6 a/ uIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm a5 Z2 j7 M1 F( E7 W5 y% Z$ ^/ i9 H
IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm
7 D7 O- K$ }6 ]( l1 J) V! z7 r1 l0 nIDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm9 q( F" i. m4 r0 u- y% P
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm4 N( K) ]* s* x4 y
- [& u3 `- V8 t7 w2 [ 编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|