如何获得活动的 x 控件
Posted
技术标签:
【中文标题】如何获得活动的 x 控件【英文标题】:How to get an active x control 【发布时间】:2013-10-24 01:38:08 【问题描述】:我尝试在基于对话框的 mfc 上使用 IWebBrowser2 制作基本浏览器
我在对话框中插入一个活动的 x 控件,例如“microsoft web browser”
我尝试使用“AtlAxGetControl”获取 IWebBrowser2 指针
但是,我总是得到一个 e_fail,“res”总是失败
void CIWebBrowser2Dlg::OnBnClickedButtonGo()
CComPtr<IUnknown> punkIE;
CComQIPtr<IWebBrowser2> pWB2;
HWND hWnd;
this->GetDlgItem(IDC_EXPLORER_MAIN, &hWnd);
HRESULT res = AtlAxGetControl(hWnd, &punkIE);
if (res == S_OK)
pWB2 = punkIE;
if(pWB2)
pWB2->GoHome();
我做了“AtlAxWinInit();”在初始化对话框上
感谢您的阅读
请告诉我如何处理它
【问题讨论】:
我认为你需要使用 DDX/DDV,而不是努力地去做。请阅读这篇旧的 codeguru 文章作为教程:codeguru.com/cpp/com-tech/atl/wtl/article.php/c3609/… 谢谢你,我做到了,但我还是想知道 【参考方案1】:或者,为什么不使用类向导为您生成一个包装类。然后,您就不必担心控件的实现方面了。
【讨论】:
我解决了这样的问题,但我想知道为什么我无法在 mfc 上使用“AtlAxGetControl”进行控制。 在不知道您发布的代码的上下文的情况下,我猜您传递的 hwnd 无效。您可以通过单步执行代码并使用 Spy++ 来验证这一点。以上是关于如何获得活动的 x 控件的主要内容,如果未能解决你的问题,请参考以下文章