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

软件热点敏感帮助的实现

[复制链接]
发表于 2006-12-27 12:48:36 | 显示全部楼层 |阅读模式
  很多人问起现在的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
  1. #include "CHMHelp.h") V% G# q/ P' y1 W$ R& q' Q

  2. 3 t3 A$ o- N3 ]3 x  B+ |4 r9 n
  3. BOOL CDataDlg::OnInitDialog() 3 U) o. \, f7 G9 b  v$ @( V! L. O
  4. {
    . e- t5 \5 n: _2 h3 i8 s& R
  5.         CDialog::OnInitDialog();9 }4 M& v1 ^* }! l
  6.         SetWindowContextHelpId(IDH_WJH_0300702025);
    2 v5 o( J9 D5 P
  7.         return TRUE;
    9 f( X. W$ l6 F7 E2 a8 W
  8. }
复制代码

5 [% y9 z( A1 B: R  j  上述代码中IDH_WJH_0300702025为在CHMHelpID.h中定义的敏感帮助的页面ID,设置了ID后在需要显示帮助的过程中(一般是用户按F1)增加如下代码:
  1. BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo)
    , ?, {* Z3 R% K- J1 v- i+ F7 p
  2. {' `( E4 T- N: c* v0 U( s  k4 R
  3.         HWND hWnd;# I4 l6 {* V8 Z, t; F
  4.         if(pHelpInfo->dwContextId > 0)
    ( j6 [1 y6 M. z9 [
  5.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    3 w5 B5 E( \5 O, A" t+ q
  6.                                         theApp.m_szHelpFile, , v( ?5 @& q6 z; J
  7.                                         HH_HELP_CONTEXT, ! r7 B. _/ N1 v0 }6 |7 r
  8.                                         pHelpInfo->dwContextId);6 S' f% ]& O) _
  9.         else
    ( j) S. a) i8 ]& v( p6 f1 \$ n$ {
  10.                         hWnd = HtmlHelp((HWND)pHelpInfo->hItemHandle,
    0 _: Y! s% n) M% |
  11.                                         theApp.m_szHelpFile, 6 l! C1 _/ M4 [( A$ S+ H
  12.                                         HH_HELP_CONTEXT, ; C  X7 w7 Z2 V9 m
  13.                                         IDH_WJH_0100000000);0 r& x. [; ?; b8 r, Y4 V) P7 \

  14. ' i! N6 d( ^  x3 g4 {( t
  15.         return (hWnd != NULL);
    4 U, m8 r; O" \
  16.         return CMDIFrameWnd::OnHelpInfo(pHelpInfo);
    , w, }, B  K5 {+ T) Y+ q
  17. }
复制代码
$ 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下加入代码编译软件即可实现热点敏感帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 09:16 , Processed in 0.017718 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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