VC++调用HtmlHelp打开chm帮助文档(附源码)

       很多软件会将帮助文档写到.chm文件中,软件中提供了打开.chm帮助文档的入口。今天我们就来讲讲如何打开.chm帮助文档。

VC++调用HtmlHelp打开chm帮助文档(附源码)_第1张图片

       我们需要调用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++常用功能代码封装,.chm帮助文档,HtmlHelp,try...except)