com调用代码示例---续3
来源:互联网 发布:淘宝远程电脑出租 编辑:程序博客网 时间:2024/06/06 03:48
--Method 5-------------------------------------------------------
通过ClassWizard利用类型库生成包装类,不过前提是com组件的接口必须是派
生自IDispatch,具体方法:
调出添加类向导(.NET中),选择类型库中MFC类,打开,选择"文件",选择
"myCom.dll"或"myCom.tlb",接下来会出来该myCom中的所有接口,选择你想
生成的接口包装类后,向导会自动生成相应的.h文件.这样你就可以在你的MFC中
像使用普通类那样使用组件了.(CreateDispatch("myCom.GetRes") 中的参数就是ProgID通过Clsid在注册表中可以查询的到)
通过ClassWizard利用类型库生成包装类,不过前提是com组件的接口必须是派
生自IDispatch,具体方法:
调出添加类向导(.NET中),选择类型库中MFC类,打开,选择"文件",选择
"myCom.dll"或"myCom.tlb",接下来会出来该myCom中的所有接口,选择你想
生成的接口包装类后,向导会自动生成相应的.h文件.这样你就可以在你的MFC中
像使用普通类那样使用组件了.(CreateDispatch("myCom.GetRes") 中的参数就是ProgID通过Clsid在注册表中可以查询的到)
CoInitialize(NULL);
CGetRes getRest;
if (getRest.CreateDispatch("myCom.GetRes") != 0)
{
getRest.Hello();
getRest.ReleaseDispatch();
}
CoUninitialize();
--注意--------------------------------------------------------------
COM中的智能指针实际上是重载了->的类,目的是为了简化引用记数,几不需要程序
员显示的调用AddRef()和Release(),但是为什么我们在Method 1中
pGetRes.Release(),问题在与,我们的智能指针pGetRes生命周期的结束是在
CoUninitialize()之后,CoInitialize所开的套间在CoUninitialize()后已经被
关闭,而pGetRes此时发生析构,导致了程序的崩溃,解决这个问题的另一个方法是
CoInitialize(NULL);
CLSID clsid;
CLSIDFromProgID(OLESTR("myCom.GetRes"),&clsid);
{
CComPtr<IGetRes> pGetRes;//智能指针
pGetRes.CoCreateInstance(clsid);
pGetRes->Hello();
}
CoUninitialize();
- com调用代码示例---续3
- com组件调用代码示例----续
- com调用代码示例--续2
- com组件调用代码示例
- js调用COM组件示例
- 天气代码调用代码示例
- jQuery调用WCF示例代码
- jQuery调用WCF示例代码
- C调用dll示例代码
- DCOM 示例:演示如何远程调用 COM 对象
- C#调用C++的COM组件简单示例
- DCOM 示例:演示如何远程调用 COM 对象
- symbian中调用dll的示例代码
- 检查必填项的调用代码示例。
- 检查必填项的调用代码示例。
- Lua调用C++函数代码示例
- python调用 C/C++ 代码示例
- 调用 kqueue 接口的示例代码
- Printf()输出格式控制
- com调用代码示例--续2
- android 配置文件解析
- 第二章 2 HTML 5 音频
- J2EE开发常用开源项目名词解释
- com调用代码示例---续3
- 信号量(semaphore)入门
- 第二章 3 HTML 5 Canvas
- 使用消息来处理多线程程序中的一些问题
- Ext.Toolbar和Ext.Menu的使用
- android 通过字符串来获取R下面资源的ID 值
- topcoder srm 519 div 1
- html5 绘制图形
- 提高 web 应用性能之 JavaScript 性能调优