现在本人需要做界面,但是需要以COM做插件的方式实现,COM同时也要用到MFC。就是说,插件功能就是可以将客户端的应用程序的界面使用插件中的FORMVIEW替换原来的FORMVIEW对话框,其中我需要在COM中使用MFC(在此不考虑MFC的资源消耗等问题,只考虑能实现其功能,一定要使用MFC)。我在我做的COM工程中是使用如下步骤创建的:
1、创建一个MFC Appwizard(dll)的以Media为名的工程;
2、在第二页中选中Automation,其余均为默认设置;
3、然后添加了一个对话框窗体资源,风格为:Style=Child, Border=None, 选中Visible;
4、在窗体中添加了一个按钮控件;
5、然后通过Insert->New ATL Object,在弹出的询问对话框中"Do you want to Add ATL support to your MFC Project?"中选择“是”,但是并不创建任何COM对象,通过"Esc"键退出,这样获得了ATL的支持;
6、在ResourceView中选中刚才添加的那个对话框窗体资源,然后选择菜单View->ClassWizard,在弹出的对话框中为窗体资源IDD_DIALOG1创建新基于CDialog的类CMyDlg, ▲注意,在此也选择了Automation选项。通过如上步骤就得到了一个以IMyDlg为接口,CMyDlg为其类名的东东,让后我就按照通常的方式为接口添加方法"BOOL ShowMe()"函数直接返回了TRUE。如上所得的工程编译成功。但是把我的这个工程添加到了客户端的时候,老是提示ShowMe()不是对象IMyDlg的函数,不知道什么原因。请各位大侠帮忙。是不是我在创建工程中缺少了什么步骤,还是那个步骤有问题,还是COM注册的问题,为什么能找到这个主件,但是却不认它的成员函数呢?(顺便说一句,我在客户端的各项设置都没有问题,该加的头文件等都添加了)
1、创建一个MFC Appwizard(dll)的以Media为名的工程;
2、在第二页中选中Automation,其余均为默认设置;
3、然后添加了一个对话框窗体资源,风格为:Style=Child, Border=None, 选中Visible;
4、在窗体中添加了一个按钮控件;
5、然后通过Insert->New ATL Object,在弹出的询问对话框中"Do you want to Add ATL support to your MFC Project?"中选择“是”,但是并不创建任何COM对象,通过"Esc"键退出,这样获得了ATL的支持;
6、在ResourceView中选中刚才添加的那个对话框窗体资源,然后选择菜单View->ClassWizard,在弹出的对话框中为窗体资源IDD_DIALOG1创建新基于CDialog的类CMyDlg, ▲注意,在此也选择了Automation选项。通过如上步骤就得到了一个以IMyDlg为接口,CMyDlg为其类名的东东,让后我就按照通常的方式为接口添加方法"BOOL ShowMe()"函数直接返回了TRUE。如上所得的工程编译成功。但是把我的这个工程添加到了客户端的时候,老是提示ShowMe()不是对象IMyDlg的函数,不知道什么原因。请各位大侠帮忙。是不是我在创建工程中缺少了什么步骤,还是那个步骤有问题,还是COM注册的问题,为什么能找到这个主件,但是却不认它的成员函数呢?(顺便说一句,我在客户端的各项设置都没有问题,该加的头文件等都添加了)
解决方案 »
- 窗体样式及透明设置!
- seekg的使用疑问
- 新手请教,邮件服务器编程
- 隐式链接dll,当应用程序调用完dll中某个函数,是否会自动free这个dll?即这个dll是否会释放内存。隐式链接与显式链接,效率怎样?
- 如何使用VC编译汇编程序?
- VC+Opengl做的3D场景
- 请教高手:windows是如何响应网络文件访问的?(分值不够啦,所以只能30啦)
- 如何播放mp3等形式的音乐,循环播放?
- Sql server,_RecordsetPtr读取二进制数据字段,调用GetChunk报错“在此环境中不允许操作”
- 一个简单的问题,先回答者有分!
- *** 高手级别问题: 当记录数量达到50万条, 用哪种 数据库+访问方式 最好? (access 还是 sql server?) (OLE DB 或者ADO???)
- 哪些类可以接受哪些消息,不是很清楚,大家帮我总结一下谢谢!
不过不同的开发工具实现窗口与子窗口的方式也不同吧
如果不同就没有必要非要用COM吧
+
学习
(com太混乱了,看的懂做不来--呵呵,可能还需要一些时间)