您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

在VC++6.0中用MFC进行COM编程
2002-03-27· ·杨宁··

1 2 3  下一页

  首先应当明确,MFC中是通过嵌套类而不是多重继承来实现COM接口的,通过接口映射机制将接口和实现该接口的嵌套类关联起来;MFC中提供一套简明的宏来实现嵌套类的定义.其次,MFC通过CCmdTarget类实现了IUnknown接口。

  本文首先描述创建一个COM服务器的步骤和核心代码.然后说明客户程序关键代码。

  此COM服务器实现一个TimeLogServer组件,为简明起见,此组件只有一个接口ITimeLog,通过ITimeLog的方法OutputLog可以将日志文本输出至日志文件。

  创建一个MFC DLL工程,选择支持Automation(当然本程序不一定是自动化服务器,在这里这样做好处在于自动实现了几个必要的输出函数如DllGetClassObject,DllRegisterServer等,否则要自己写)

  第一节 COM服务器

  一. 声明组件和接口

  1.写一个GUIDs.h,在GUIDs.h中声明组件和接口的GUID

//声明组件GUID {A433E701-E45E-11d3-97B5-52544CBA7F28}
//DEFINE_GUID(CLSID_TimeLogServer,
//0xa433e701, 0xe45e, 0x11d3, 0x97, 0xb5, 0x52, 0x54, 0x4c, 0xba, 0x7f, 0x28);
static const IID CLSID_TimeLogServer =
{0xa433e701, 0xe45e, 0x11d3, {0x97, 0xb5, 0x52, 0x54, 0x4c, 0xba, 0x7f, 0x28}};
// 声明接口GUID{A433E702-E45E-11d3-97B5-52544CBA7F28}
//DEFINE_GUID(IID_ITimeLog,
//0xa433e702, 0xe45e, 0x11d3, 0x97, 0xb5, 0x52, 0x54, 0x4c, 0xba, 0x7f, 0x28);
static const IID IID_ITimeLog =
{0xa433e702, 0xe45e, 0x11d3, {0x97, 0xb5, 0x52, 0x54, 0x4c, 0xba, 0x7f, 0x28}};

  2.写一个ITimeLogServer.h,在ITimeLogServer.h文件中声明组件和接口

//ITimeLogServer.h
#include ";GUIDs.h";
//接口ITimeLog的声明
DECLARE_INTERFACE_(ITimeLog,IUnknown)
{
    STDMETHOD(OutputLog)(BSTR* varLogText)PURE;
};

  说明:

  1.宏DEFINE_GUID将组件和接口的progid与GUID相关联.可以用guidgen.exe工具产生。

  2.宏DECLARE_INTERFACE_声明接口;该宏第一个参数为接口名,第二个参数为该接口的基类.声明没有基类的接口用DECLARE_INTERFACE宏。

  3.宏STDMETHOD声明接口中的方法.此方法的返回值为HRESULT.PURE被解释为";=0";,即此方法为纯虚函数.当方法的返回值不是HRESULT时,用宏STDMETHOD_(返回类型,函数名)(参数)PURE;

1 2 3  下一页

■ 相关内容
 公寓间的线程调度问题
 COM组件中使用用户自定义数据类型
 用ATL建立轻量级的COM对象(八)
 用托管C++开发Win表单的一般方法
 MFC文件浏览程序中改变文件读写对话框样式
 使用Microsoft Agent的COM接口编程
 COM中的可连接对象与连接点机制及其MFC程序实现
 MFC中自由使用自定义消息
 为MFC和ATL控件创建签署的CAB文件
 MFC编程特点
 应用MFC开发高级应用程序
 MFC中所提供的各种视类介绍
 MFC中常用类,宏,函数介绍
 利用MFC进行开发的通用方法介绍
 利用Visual C++/MFC开发Windows程序
 Visual C++/MFC入门教程
 MAP原理及其在MFC中的实现
 理解Visual C++.NET定制MFC应用程序
 MFC中多线程的应用
 MFC简单打印方法
 谈谈MFC中的消息映射
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!