为应用程序制作帮助文件

简介:   本文简要介绍如何为应用程序制作一个帮助文件。  我们需要借助的工具软件清单如下:  (1)支持Rtf格式的文字处理软件,例如 Office 中的Word。  (2)Help WorkShop。

  本文简要介绍如何为应用程序制作一个帮助文件。

  我们需要借助的工具软件清单如下:

  (1)支持Rtf格式的文字处理软件,例如 Office 中的Word。

  (2)Help WorkShop。(由VC6携带安装的一个工具)

 

  步骤1:用文字处理软件编辑你的帮助文件(*.rtf),这个文件定义你的帮助文件中的一些主题(Topic),每个topic实际上就是用WinHelp显示的一个页面。这一部本质上就属于文字处理了,只是你需要在保存的时候选择rtf格式。需要特别掌握的是以下几点:

 

  每个topic结束后追加一个分页符。 在每个topic的最前面可以添加以下脚注(添加的脚注请使用以下编号):

  #:你的topic的一个唯一标识符,它是必须的,也是做链接时需要用到的。

  K:定义该topic的关键字,用英文分号分割;

  $:定义该topic的标题,它将显示在winhelp的历史窗口,查找等地方。

 

  制作链接时,把链接的文本用双下划线格式,然后在文本后面添加一段隐藏文本,输入要链接的topic的唯一标示符。

 

  制作出来的rtf文档效果如下图所示: 下图显示的是帮助文件的目录,里面包含了到每个topic的链接。

  

 

  下图显示的是为某个topic添加的脚注:

  

  (2)创建一个Help项目:打开 Microsoft help workshop 软件, 点击File -> New ->选择 Help Project;

  建立好项目以后,我们可以使用右侧的那些按钮去设置这个项目的一些信息,过程很简单,这里就不详细介绍了, 细节可以查阅 help workshop 的帮助文件。设置好的项目如下图所示:

  

 

  (3)先把项目保存,然后我们用help workshop 创建帮助文件的内容文件(*.cnt)。 使用菜单 File->New-> 选择help Contents。然后我们添加目录(Head,一本书的图标)和Topic(文件图标),使用 MoveLeft 和 MoveRight 按钮可以修改缩进。做好的 Contents 效果如下图所示:

 

  

 

  (4)把 contents文件保存,然后打开刚才的help Project, 在Options的 Files 标签页中填加 Contents 文件。如下图所示:

  

 

  然后我们点击“ Save and compile ” 按钮编译帮助文件,编译成功以后,通过菜单 File -> Run Winhelp 可以看到我们做的帮助文件的效果如下图所示:

 

  

 

  帮助文件基本做好了,现在我们为我们的应用程序添加对帮助的支持,首先我们在资源中打开窗口的菜单资源,在帮助菜单下添加下面几项:

  帮助主题(IDM_HELPCONTENTS), 内容(IDM_HELPCONTENTS),搜索帮助(IDM_HELPSEARCH),然后我们在窗口过程中处理WM_COMMAND消息时添加对这几个菜单的处理,相关代码如下:

 

img_405b18b4b6584ae338e0f6ecaf736533.gif code_wndproc
// 获取和程序位于同一个目录下文件的绝对路径

void  GetAppFolderFileName( char   * buffer,  char *  shortFileName)
{
    
char *  pChar  =  NULL;
    GetModuleFileName(NULL, buffer, MAX_PATH);
    pChar 
=  strrchr(buffer,  ' \\ ' );
    
if (pChar  !=  NULL)
    {
        strcpy(pChar 
+   1 , shortFileName);
    }
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    WORD ctlId, wmEvent;
    
switch  (message) 
    {
    
case  WM_HELP:  // F1
        {
            
// 获取和程序位于同一个目录下文件的绝对路径
             char  buffer[MAX_PATH];
            GetAppFolderFileName(buffer, 
" RFCARD.HLP " );
            WinHelp (hWnd, buffer, HELP_CONTENTS,(DWORD)
0 );

        }
        
break ;
    
case  WM_COMMAND:
        ctlId    
=  LOWORD(wParam); 
        wmEvent 
=  HIWORD(wParam); 
        
switch  (ctlId)
        {
        
case  IDM_HELPTOPICS:  //  "Help Topics..."
            {                
                
char  buffer[MAX_PATH];
                GetAppFolderFileName(buffer, 
" RFCARD.HLP " );
                WinHelp (hWnd, buffer, HELP_FINDER,(DWORD)
0 );
            }
            
break ;
        
case  IDM_HELPCONTENTS:  //  "Contents"
            {
                
char  buffer[MAX_PATH];
                GetAppFolderFileName(buffer, 
" RFCARD.HLP " );
                WinHelp (hWnd, buffer, HELP_CONTENTS,(DWORD)
0 );
            }
            
break ;
        
case  IDM_HELPSEARCH:  //  "Search for Help On..."
            {
                
char  buffer[MAX_PATH];
                GetAppFolderFileName(buffer, 
" RFCARD.HLP " );
                WinHelp(hWnd, buffer, HELP_PARTIALKEY, (DWORD)(LPSTR)
"" );
            }
            
break ;
        
default :
            
return  DefWindowProc(hWnd, message, wParam, lParam);
        }
        
break ;
    }
}


  然后我们重新编译我们的应用程序,成功以后,可以在应用程序处于前台时按下F1键(程序将收到WM_HELP消息),或者点击帮助下面的菜单,查看效果可能如下图所示:

   

 

  

 

  

 

  本文参考以下资料:

  (1)崔晓阳,实例简述Hlp帮助文件的制作,《农业网络信息》2007年第9期。

  (2)MSDN:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dnwui/html/msdn_generic.htm

    Robert B. Hess, Generic: Anatomy of a Simple Win32 Application, Windows User Interface Technical Articles, October 17, 1994; 

目录
相关文章
|
网络协议 Linux 网络安全
小白也能看懂的 iptables 防火墙
iptables是Linux中功能最为强大的防火墙软件之一 是一个在 Linux 系统上常用的防火墙工具,用于配置和管理网络数据包过滤规则。它可以通过定义规则集来控制进出系统的网络流量,实现网络安全策略
560 5
|
9月前
|
人工智能 运维 测试技术
SEMIKONG:专为半导体领域设计的大型语言模型,支持制造优化、辅助 IC 设计等半导体制造任务
SEMIKONG 是专为半导体行业定制的大型语言模型,能够优化制造过程、辅助 IC 设计,并整合专家知识,推动领域特定 AI 模型的研究与应用。
612 7
SEMIKONG:专为半导体领域设计的大型语言模型,支持制造优化、辅助 IC 设计等半导体制造任务
|
11月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
245 64
|
安全 API 开发者
国内Claude 3.5怎么注册使用?
Claude 3.5由Anthropic开发,可通过特定平台如Slack或API使用。注册需用稳定邮箱如Gmail,并通过国外手机号验证。Slack用户可直接添加Claude 3.5应用进行交互,支持中英文。开发者可注册Anthropic API获取密钥。此外,国内有镜像服务可供使用。请注意隐私政策及访问限制。
1264 2
国内Claude 3.5怎么注册使用?
|
编解码 Unix Linux
【Linux C/C++ 延时(延迟)函数比较】介绍Linux系统中常用的延时函数sleep、usleep、nanosleep、select和std::sleep_for()的区别和使用场景
【Linux C/C++ 延时(延迟)函数比较】介绍Linux系统中常用的延时函数sleep、usleep、nanosleep、select和std::sleep_for()的区别和使用场景
4263 1
|
数据采集 安全 数据处理
CPCI(CompactPCI)简介
CPCI(CompactPCI)简介
3858 0
CPCI(CompactPCI)简介
|
Linux Shell C语言
不敲一行代码,实现Linux下的LED驱动!
不敲一行代码,实现Linux下的LED驱动!
|
Rust Linux Windows
【RUST 实战】交叉编译之Windows To Linux
【RUST 实战】交叉编译之Windows To Linux
4422 1
【RUST 实战】交叉编译之Windows To Linux
|
机器学习/深度学习 数据采集 存储
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(一)
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命
2441 0
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(一)