描述:
小弟以前一直在做mfc下的桌面应用,最近想做一个拥有类似桌面应用那样界面的activex控件,比如包含几个编辑框和按钮,实现一个简单的计算器。
按照传统的MFC桌面应用开发,要实现这个很简单,直接在Dialog资源设计器上进行设计就可以,但是用mfc开发ActiveX控件的时候,我是这样做的:
1、创建了一个MFC/Activex项目,名为TestControl,选择了继承SysTabControl32,然后编译,在activex测试容器里测试,是一个面板,正常;
2、创建一个mfc的类,名为CMyPad,继承了CDialog,在对话框设计器上进行了一些设计,放了一个编辑框(CEdit)控件;
3、在控件的TestControlCtrl.cpp中增加全局指针:CMyPad *pMyPad;
4、修改一下代码:
void CTestControlCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
// 我的代码
pMyPad = new CMyPad;
pMyPad->Create(IDD_MYPAD, this);
pMyPad->SetWindowPos(NULL,25,45,430,265,SWP_SHOWWINDOW);
pMyPad->ShowWindow(SW_SHOW);
// TODO: 为每个持久的自定义属性调用 PX_ 函数。
}
5、编译控件后,在activex容器中测试结果为,在显示控件的同时,也显示了一个对话框,在屏幕的左上角,输入框也正确显示;
6、修改对话框的style属性为Child,即可以内嵌入主对话框,编译测试,报错。
以上这些操作对于一个不是activex的普通MFC开发来说,是不存在问题的,但是在activex中,不知道要怎么实现?
另外,对于我的这个需求,用ATL是不是更简单一些?
解决方案1:
http://www.codeguru.com/Cpp/COM-Tech/activex/controls/comments.php/c2615/
您可能想查找下面的文章:
- VS2003中,我在VC的Dialog中添加一个CustomControl之后Dialog就不能显示了?
- 求一个在vs2003下用VC++写的系统服务的例子ATL
- 哪位大侠能讲一下VS2003下编写ATLProject与VS60下的区别?100分!
- 如何利用vs2003建立mmcsnap-in?急!!
- VS2003属性化的项目为什么生成的事件被另一个项目导入后函数列表中看不到我定义的函数呢!
- alt在vs2003中应该怎么用呢?
- 新手vs2003创建MFCactivex控件怎样用向导生成一个能传递字符串参数的函数呀???
- vc6转到VS2003中,关于CString的链接错误
- VS2003移植到VS2008,UNICODE库文件链接失败的问题
- VS2003中使用MFC创建一个ActiveX控件问题