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帮助文档(附源码)的主要内容,如果未能解决你的问题,请参考以下文章

CHM 帮助文件无法显示

chm开源文档制作

转-----EasyCHM制作教程

Sphinx 生成 Windows 帮助文件 (.chm文件)

winform全屏打开CHM帮助文档

使用java代码打开chm格式的帮助文档