以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  VC++程序中用对话框的形式显示HTML文件  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=26936)


--  作者:卷积内核
--  发布时间:2/5/2006 10:37:00 AM

--  VC++程序中用对话框的形式显示HTML文件



----在安装了IE后,可以在程序中用对话框的形式显示HTML文件,如弹出用
HTML写的帮助文件等等,如同直接用浏览器,但又与浏览器风格不同。

----其实现如下:
//在头文件或.cpp文件的开头包含文件urlmon.h,定义函数
/////
#include "urlmon.h"
typedef HRESULT STDAPICALLTYPE SHOWHTMLDIALOGFN
(HWND hwndParent, IMoniker
*pmk, VARIANT *pvarArgIn, TCHAR* pchOptions,
VARIANT *pvArgOut);
//////

//函数显示对话框,成功返回TRUE,失败返回FALSE
BOOL ShowHtml()
{
HINSTANCE hinstMSHTML = LoadLibrary
(TEXT("MSHTML.DLL")); //装载动态连接库
WCHAR url[]=L"HTTP://www.ccw.com.cn";
//此地址名称可直接用html文件名代替

if(hinstMSHTML)//装载动态连接库成功
{
SHOWHTMLDIALOGFN *pfnShowHTMLDialog;

pfnShowHTMLDialog = (SHOWHTMLDIALOGFN*)
GetProcAddress(hinstMSHTML,
TEXT ("ShowHTMLDialog"));

if(pfnShowHTMLDialog)
{
IMoniker *moniker=NULL;

//
if( FAILED(CreateURLMoniker(NULL,
(LPWSTR)url,&moniker ) ))
{
FreeLibrary(hinstMSHTML);
return FALSE;
}

//调用ShowHTMLDialog函数显示URL上的HTML文件
pfnShowHTMLDialog(m_hWnd,moniker,NULL,NULL,NULL);

if(moniker!=NULL)
moniker->Release();

//显示成功,返回TRUE
return TRUE;

}
else //GetProcessAddress失败
return FALSE;

FreeLibrary(hinstMSHTML);
}
else //装载动态连接库失败
return FALSE;
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms