CWnd mfc webbrowser 设置控件位置
时间: 2023-09-12 19:12:36 浏览: 187
可以使用 CWnd 类的 MoveWindow() 函数来设置控件的位置。具体步骤如下:
1. 获取 WebBrowser 控件的句柄。
```
CWnd* pWebBrowser = GetDlgItem(IDC_WEB_BROWSER);
HWND hWndWebBrowser = pWebBrowser->GetSafeHwnd();
```
2. 调用 MoveWindow() 函数设置控件的位置。该函数的参数依次为控件的左上角 x 坐标、y 坐标、宽度和高度。
```
pWebBrowser->MoveWindow(100, 100, 500, 500);
```
完整示例代码:
```
CWnd* pWebBrowser = GetDlgItem(IDC_WEB_BROWSER);
HWND hWndWebBrowser = pWebBrowser->GetSafeHwnd();
pWebBrowser->MoveWindow(100, 100, 500, 500);
```
相关问题
CWnd mfc webbrowser 设置控件大小
您可以通过以下步骤设置MFC WebBrowser控件的大小:
1. 打开您的MFC对话框资源。
2. 添加一个新的WebBrowser控件。
3. 选中该控件并在属性窗口中找到“ID”属性。
4. 将其设置为您在类向导中创建的成员变量的ID。
5. 在您的代码中,添加以下行来设置控件的大小:
```
CWnd* pBrowserWnd = GetDlgItem(IDC_YOUR_WEB_BROWSER_ID);
CRect rect;
pBrowserWnd->GetClientRect(&rect);
pBrowserWnd->MoveWindow(rect.left, rect.top, YOUR_WIDTH, YOUR_HEIGHT, TRUE);
```
在上述代码中,您需要将“YOUR_WEB_BROWSER_ID”替换为您在步骤4中设置的控件ID,并将“YOUR_WIDTH”和“YOUR_HEIGHT”替换为您想要的控件宽度和高度。
6. 重新编译并运行您的应用程序,您应该能够看到您的WebBrowser控件已经被正确地调整大小了。
mfc 判断 webbrowser 加载完成
可以通过在 MFC 中使用 `DWebBrowserEvents2` 接口来判断 `WebBrowser` 控件是否加载完成。具体实现步骤如下:
1. 在 MFC 对话框类的头文件中添加以下内容:
```
class CMyDialog : public CDialogEx, public DWebBrowserEvents2
{
// ...
STDMETHOD(OnDocumentComplete)(IDispatch* pDisp, VARIANT* URL);
// ...
}
```
2. 在 MFC 对话框类的源文件中添加以下内容:
```
BEGIN_DISPATCH_MAP(CMyDialog, CDialogEx)
DISP_FUNCTION_ID(CMyDialog, "OnDocumentComplete", 259, OnDocumentComplete, VT_EMPTY, VTS_DISPATCH VTS_PVARIANT)
END_DISPATCH_MAP()
STDMETHODIMP CMyDialog::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL)
{
// 加载完成后的处理逻辑
return S_OK;
}
```
3. 在对话框的 `OnInitDialog` 函数中添加以下代码:
```
// 获取 WebBrowser 控件对象
CWnd* pWnd = GetDlgItem(IDC_EXPLORER1);
if (pWnd)
{
// 获取控件对象的 dispatch 指针
LPDISPATCH lpDispatch = pWnd->GetControlUnknown();
if (lpDispatch)
{
// 将 dispatch 指针转换为 WebBrowser 控件对象
CComPtr<IWebBrowser2> pWebBrowser2;
lpDispatch->QueryInterface(IID_IWebBrowser2, (void**)&pWebBrowser2);
if (pWebBrowser2)
{
// 注册 DWebBrowserEvents2 事件接口
CComPtr<IConnectionPointContainer> pConnectionPointContainer;
pWebBrowser2->QueryInterface(IID_IConnectionPointContainer, (void**)&pConnectionPointContainer);
if (pConnectionPointContainer)
{
CComPtr<IConnectionPoint> pConnectionPoint;
pConnectionPointContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &pConnectionPoint);
if (pConnectionPoint)
{
DWORD dwCookie;
pConnectionPoint->Advise(this, &dwCookie);
}
}
}
}
}
```
4. 在 `OnDocumentComplete` 函数中添加加载完成后的处理逻辑,例如:
```
STDMETHODIMP CMyDialog::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL)
{
// 判断是否已加载完毕
CComPtr<IWebBrowser2> pWebBrowser2;
pDisp->QueryInterface(IID_IWebBrowser2, (void**)&pWebBrowser2);
if (pWebBrowser2 && pWebBrowser2->ReadyState == READYSTATE_COMPLETE)
{
// 加载完成后的处理逻辑
// ...
}
return S_OK;
}
```
这样,当 `WebBrowser` 控件加载完成后,就会自动调用 `OnDocumentComplete` 函数,从而触发相应的处理逻辑。
阅读全文