在C++中展示網頁內容可以使用webview控件,以下是一個簡單的示例代碼:
#include <Windows.h>
#include <atlbase.h>
#include <atlwin.h>
#include <ExDisp.h>
#include <Mshtml.h>
class CWebView : public CWindowImpl<CWebView, CAxWindow> {
public:
DECLARE_WND_SUPERCLASS(NULL, CAxWindow::GetWndClassName())
BEGIN_MSG_MAP(CWebView)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
RECT rcClient;
GetClientRect(&rcClient);
CComPtr<IWebBrowser2> spWebBrowser;
HRESULT hr = spWebBrowser.CoCreateInstance(CLSID_WebBrowser);
if (SUCCEEDED(hr)) {
hr = CAxWindow::Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE, 0, spWebBrowser, nullptr);
if (SUCCEEDED(hr)) {
CComVariant varUrl(L"https://www.example.com");
hr = spWebBrowser->Navigate2(&varUrl, nullptr, nullptr, nullptr, nullptr);
}
}
return 0;
}
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
PostQuitMessage(0);
return 0;
}
};
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
CWebView view;
view.Create(NULL, CWindow::rcDefault, _T("Web View Example"), WS_OVERLAPPEDWINDOW);
view.ShowWindow(nCmdShow);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
在上面的示例中,我們創建了一個自定義的CWebView
類,繼承自CWindowImpl
和CAxWindow
,并實現了OnCreate
和OnDestroy
消息處理函數。在OnCreate
函數中,我們創建了一個IWebBrowser2
對象,并將其添加到窗口中,然后加載了指定的網頁內容。在WinMain
函數中,我們創建了一個CWebView
對象并顯示出來。
請注意,此示例代碼僅在Windows環境下有效,需要使用Visual Studio或其他支持C++編譯的IDE進行編譯。您也可以根據需要調整代碼以適應不同平臺和需求。