如何在对话框中使用ActiveX控件?

apprentice111 2002-06-20 09:18:12
我要在对话框中使用一个第三方的ActiveX控件,但这个控件不支持从gallery里Add to project, insert control.即无法用dialog resource editor加入。
我只知道首先要用import将dll或lib倒入。但是如何生成一个instance,如何使用CreateControl? 如何使用它的方法和事件?请讲的详细一点,谢谢!!!
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiang0730 2002-06-20
  • 打赏
  • 举报
回复
同意 wistaria(听风听雨)
zhishao 2002-06-20
  • 打赏
  • 举报
回复
如果你不想用很复杂的COM接口来操作这个AciveX的话呢,
1、首先用一个简单的窗口类包装那个ActiveX
// This code is generated by the Control Wizard.
// It wraps the call to CreateControl in the call to Create.
class CGenocx : public CWnd
{
protected:
DECLARE_DYNCREATE(CGenocx)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x8a6bbfeb, 0xf9bb, 0x11d1, { 0xb9, 0xc9, 0x0,
0x60, 0x8, 0x93, 0xb0, 0xfe } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName,
dwStyle, rect, pParentWnd, nID);
}
...
};

2、在Dialog类里声明这个ActiveX的成员,
class CMyDialog : public CDialog {
...

CGenocx control;
};

3、在资源文件你的 DIALOG 段中加入ActiveX控件的说明
IDD_TPATEST_DIALOG DIALOGEX 0, 0, 443, 325
...
BEGIN
...
CONTROL "",IDC_CTRL1,"{12345678-1234-5678-1234-123456789000}",
WS_TABSTOP,7,7,375,311
...
END

好了,现在你应该已经可以用这个控件了。

方法和事件的调用取决于你的包装类,即上面的CGenocx。ActiveX接口最简单的包装就是用InvokeHelper()了。

Good luck!
wistaria 2002-06-20
  • 打赏
  • 举报
回复
注册这个控件后,就可以在gallery中找到.
apprentice111 2002-06-20
  • 打赏
  • 举报
回复
试了几次,终于出来了。其实简单,就是太着急了。Wraper函数很好用。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧