VC++调用HtmlHelp打开chm帮助文档(附源码)
Posted dvlinker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++调用HtmlHelp打开chm帮助文档(附源码)相关的知识,希望对你有一定的参考价值。
很多软件会将帮助文档写到.chm文件中,软件中提供了打开.chm帮助文档的入口。今天我们就来讲讲如何打开.chm帮助文档。
我们需要调用htmlHelp打开帮助文档。最开始我们也没用过这个函数,不知道调用该函数时应该传递什么样的参数。后来我们发现一个常用的国外工具软件,也是打开.chm帮助文档的,于是用API Monitor工具探测了该工具对HtmlHelp接口的调用情况,在API Monitor中可以查看到调用HtmlHelp接口时都传递了什么参数。具体参数参见下面的源代码。
此外,我们在调用HtmlHelp时需要加上__try....__except保护一下,因为要打开的.chm文件可能出现损坏或者文件被删除,在这些情况下,HtmlHelp内部会抛出异常,如果不添加__try....__except会导致程序崩溃闪退。这些问题,在实际项目中都遇到过。
其实使用HtmlHelp打开.chm帮助文档的代码很简单,如下所示:
BOOL OpenChmHelpFile( LPCTSTR lpStrPath )
HWND hHelpWnd = NULL;
// 此处要添加__try...__except...保护,防止文件不存在或被损坏导致软件崩溃
__try
hHelpWnd = HtmlHelp( NULL, lpStrPath, HH_DISPLAY_TOPIC, NULL );
__except( EXCEPTION_EXECUTE_HANDLER )
// 当捕获到异常时,直接设置EXCEPTION_EXECUTE_HANDLER,不需要额外处理
hHelpWnd = NULL;
if ( NULL == hHelpWnd )
WriteContactLog( _T("[OpenChmHelpFile] HtmlHelp execute failed, path [%s]!"), lpStrPath );
return FALSE;
return TRUE;
以上是关于VC++调用HtmlHelp打开chm帮助文档(附源码)的主要内容,如果未能解决你的问题,请参考以下文章