|
很多人问起现在的CHM帮助文档如何作为软件的热点敏感帮助,网上搜索的资料也不多,可能是太简单了吧,呵呵!今天整理了一下,详细的介绍在VC开发的软件中对CHM帮助文档的调用方法以及CHM帮助文档的制作要求。
. O# x7 e$ W0 } F/ \
' ?* W. y; S, R$ z; U2 I一、软件中对CHM帮助文档的调用方法
) _& h8 z) T$ u5 I8 Z$ a! ~) w# w' D) y& [
VC中调用CHM帮助必须用API函数HtmlHelp(),此函数在LIB库函数内,为方便调用,我把它整体打包了,您要做的就是把它放到VC工程所在的目录,然后包含CHMHelp.h头文件即可。
$ i6 Z6 _; `1 |. ?系统包含文件如下: 1 w9 P7 L9 L$ N2 n
5 k# [" I# Q, M8 i+ k: W$ {% W& N
- #include "CHMHelp.h"
6 Q$ m; b& s/ c; N# n - " D+ b7 u; F: u3 n' k
- BOOL CDataDlg::OnInitDialog()
9 ^* N0 [9 c5 ]1 J0 {8 r" r- [% P - {
8 o9 `" Y0 z, s! H* z! q- a% S4 Y - CDialog::OnInitDialog();
; d( y; L; M1 [3 b3 F2 g) L - SetWindowContextHelpId(IDH_WJH_0300702025);$ c* O! t' B# V# Y% `
- return TRUE;
; \, r- p5 `9 h, ?4 X1 Z& I - }
复制代码
: z7 R5 z* W& v5 F. w R& G 上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:- BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
# q, Z0 q( l. a- \9 q9 I - {
9 f1 M7 l# R) ~ `7 r$ e7 b - HWND hWnd;
+ P. M8 Y" |& K - if(pHelpInfo->dwContextId > 0)
9 p; k) Y$ c% t9 R8 b - hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, # [- X, r% O# `8 w3 l* Y o
- theApp.m_szHelpFile,
: A4 [! A5 p+ _' y7 {1 x - HH_HELP_CONTEXT, 0 }0 P* ~0 u9 y- h
- pHelpInfo->dwContextId);
, P& Q! z: `4 I% O5 Y T2 ` - else 7 n% M$ C" @& ~+ _" N% [3 t0 ?( M
- hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
7 L/ x* K' q2 c8 o& j' V% | - theApp.m_szHelpFile,
. W1 ?! A- |) ]4 C2 a# G) N* n - HH_HELP_CONTEXT, j) {! s* Y4 U9 ]. b( c0 G$ B
- IDH_WJH_0100000000);* h7 @6 o, R1 I" }. \: k6 y
$ G6 ]1 b2 g9 A0 j- }, G- return (hWnd != NULL);$ S& _, y8 I( [8 t0 f
- return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
, ~: [$ @1 K% K# T, X/ d - }
复制代码
8 A6 @* F& @& Z+ w; j# G6 R0 x. w 上述代码即响应用户F1按键,若当前显示界面设置了热点敏感帮助的页面ID时,程序将打开CHM帮助文档并跳转到ID对应的页面;若当前显示界面没有设置热点敏感帮助的页面ID,则显示软件帮助缺省的页面。IDH_WJH_0100000000为软件的缺省显示页面ID。
: K! T# c3 r, K2 C R% p二、CHM帮助文档的制作要求 S: ~4 u# e6 E( ~2 Y' ]$ h
- j% n- ~3 o) d4 Z* w$ K( QCHM帮助文档必须包含API文档信息,包含页面ID文件和ID对应页面名称申明二个文件,格式如下:
! {3 k H, o5 e8 ]2 h) h: T' `: B5 n' O( Q& o" e
CHMHelpID.h 页面ID文件格式:* W# {% f( v+ R
#define IDH_WJH_0000000000 0
& y9 o/ T; q# H#define IDH_WJH_0100000000 1000000001 t. H8 ]+ r* Y' r8 L% t8 Y
#define IDH_WJH_0100100000 100100000. G! z9 a' H* v3 u8 ?( U, N; ^1 `
#define IDH_WJH_0100101000 100101000
% M) C e- L- k; O/ l9 G& ?2 E+ O2 J
AliasID.hID对应页面名称申明文件格式: IDH_WJH_0000000000 = 用户操作手册.Content\0000000000_操 作 手 册.Htm
0 y: c6 k' B9 V' `. r4 k# PIDH_WJH_0100000000 = 用户操作手册.Content\0100000000_第一部分 系统介绍.Htm
8 z! x E& ~: w$ t6 Z) K& _IDH_WJH_0100100000 = 用户操作手册.Content\0100100000_第一章 主要功能.Htm1 ~3 B4 N m0 N$ f
IDH_WJH_0100101000 = 用户操作手册.Content\0100101000_1、基本功能.Htm( S) \; y- `5 H7 e) @
IDH_WJH_0100102000 = 用户操作手册.Content\0100102000_2、高级应用功能.Htm4 P8 M4 z) H Y
- k \# X6 j$ l9 Z; C: F 编制好这两文件后,包含在HHP工程文件中,用HTML WORK SHOP进行编译就可以了。 现在网上也有很多软件可以按照WORD文档的章节自动生成上述文件,极大的方便了用户制作软件热点敏感帮助。现推荐一款制作CHM的软件:Word2CHM帮助文档制作工具,此软件自动将WORD文档按照章节转换成CHM文档,并自动生成上述两个文件。您需要做的就是按照第一节介绍的方法在VC下加入代码编译软件即可实现热点敏感帮助。 |
|