C++ 如何从ATL对话框正确访问ATL控件?
我有一个MSVC 2010解决方案,包含两个项目:C++ 如何从ATL对话框正确访问ATL控件?,c++,controls,atl,dhtml,C++,Controls,Atl,Dhtml,我有一个MSVC 2010解决方案,包含两个项目: ATL DLL项目,其中包含DHTML控件(名为DHTMLControl,基本上由向导构建)。我想我可以把这个控制放到第二个项目中 ATL EXE项目,其中包含主对话框(CMIndialog),也由向导创建 我已成功将DHTMLControl添加到对话框中: 将DHTMLControl添加到工具箱 将其拖到资源视图中的主对话框中 已从工具箱中删除DHTMLControl(以避免生成时拒绝访问) 然而,我的问题是我不知道如何使用这个控件 假设
- ATL DLL项目,其中包含DHTML控件(名为DHTMLControl,基本上由向导构建)。我想我可以把这个控制放到第二个项目中
- ATL EXE项目,其中包含主对话框(CMIndialog),也由向导创建
LRESULT CMainDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
调用DHTMLControl方法的正确方法是什么?比如说,我想在按下主对话框上的按钮后导航到另一个url或类似的内容
如何获取CMIndialog类中DHTMLControl(CDHTMLontrol?IDHTMLontrol?)的指针/引用
对不起,如果这听起来有点混乱,但我真的与ATL斗争
谢谢。将生成的i.h包含到对话框的标题中(不要包含实际控件的标题-它不应该包含在内) 然后使用类似的方法:
CComPtr<IDHTMLControl> ptr;
HRESULT hr = GetDlgControl(IDC_DHTML_CONTROL, IID_IDHTMLControl, (void**)&ptr);
BSTR url = SysAllocString(L"http://example.com/");
// Call control's prop method
ptr->put_Url(url);
SysFreeString(url);
CComPtr ptr;
HRESULT hr=GetDlgControl(IDC\U DHTML\U控制、IID\U IDHTMLControl(无效**)和ptr);
BSTR url=SysAllocString(L)http://example.com/");
//调用控件的prop方法
ptr->put_Url(Url);
SysFreeString(url);