C++ 使用 Windows.h 库嵌入 IE 内核显示网页组件 (以 bing.com 为例)
要在 C++ 中调用 IE 内核显示网页组件,可以使用 C++ 的 Windows API 中的 WebBrowser 控件。以下是一个简单的示例代码,可以在 Windows 平台上显示 bing.com 网页:
#include <Windows.h>
#include <Exdisp.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CREATE:
{
RECT rcClient;
GetClientRect(hWnd, &rcClient);
// 创建 WebBrowser 控件
IWebBrowser2* pWebBrowser;
CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pWebBrowser));
pWebBrowser->put_Silent(VARIANT_TRUE); // 静默加载页面
// 设置 WebBrowser 控件位置和大小
pWebBrowser->put_Left(0);
pWebBrowser->put_Top(0);
pWebBrowser->put_Width(rcClient.right);
pWebBrowser->put_Height(rcClient.bottom);
// 获取 WebBrowser 控件的 HWND
HWND hWndWebBrowser;
pWebBrowser->get_HWND((LONG_PTR*)&hWndWebBrowser);
// 将 WebBrowser 控件作为子窗口添加到主窗口
SetParent(hWndWebBrowser, hWnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.lpszClassName = L"WebBrowserWindow";
RegisterClass(&wc);
// 创建主窗口
HWND hWnd = CreateWindow(wc.lpszClassName, L"Web Browser", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
// 显示主窗口
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
编译运行上述代码后,将显示一个大小为 800x600 的窗口,其中内嵌了一个 WebBrowser 控件,该控件加载并显示 bing.com 网页。
原文地址: http://www.cveoy.top/t/topic/qtTz 著作权归作者所有。请勿转载和采集!