找回密码
 注册
搜索
查看: 5964|回复: 0

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的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' ^
  1. #include "CHMHelp.h"0 Q' n. Z& R7 B: a* A& ~4 _
  2. ; c5 T: z9 z3 m* s. s
  3. BOOL CDataDlg::OnInitDialog()
    2 E" V4 ~( O$ r; x' \
  4. {
    8 z5 `6 u6 R! h8 ~% V! [. h
  5.         CDialog::OnInitDialog();9 m* S) P" r* c0 u, x0 n" O( V# \% M* i% D
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);; i2 \) j; k. }2 T
  7.         return TRUE;- H6 F; i. V+ K1 n1 H/ ~: [% A
  8. }
复制代码
1 k' E" S4 q: p! r# O1 @
  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo) 7 L( u* B  b7 k7 F
  2. {
    + q( c$ ~- C( k
  3.         HWND hWnd;$ w3 C- W$ j: ?" Y& q: N% |/ Z
  4.         if(pHelpInfo->dwContextId > 0)
    4 _+ O- U; j7 U5 e( ?; v9 C# M/ c" [$ }
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle, ! q2 K1 m# Q" O( j% n
  6.                                         theApp.m_szHelpFile, # e! n& H) D. j! R# X
  7.                                         HH_HELP_CONTEXT, % {" l6 f+ m! q3 b( J1 R9 l. {
  8.                                         pHelpInfo->dwContextId);
    * y* ^1 f0 M7 i% K
  9.         else * `2 W9 W; {8 ]1 X5 B& ]2 ~% ]
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    1 A% M2 |( s! y7 U, s6 l8 }
  11.                                         theApp.m_szHelpFile, 6 O( o7 w; f! |: L# e
  12.                                         HH_HELP_CONTEXT,
    ! X: L5 J, |! C+ r' z/ Y
  13.                                         IDH_WJH_0100000000);
    ) z- R8 n) i' K

  14. % v2 w" C. e" J3 q$ ?: R) E
  15.         return (hWnd != NULL);% V7 x1 s; N  [6 U
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);, C& Q2 ?' n& ?( a- W$ `) ]
  17. }
复制代码

& 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下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-8-13 21:35 , Processed in 0.019114 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表