如何获得活动的 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 控件的主要内容,如果未能解决你的问题,请参考以下文章

c#怎么寻找焦点在哪个控件上

menustrip控件 如何获得2级菜单个数

如何获取控件句柄 vc

C#如何获得panel中的控件

C#如何获得panel中的控件

Android如何判断控件获取焦点啊?