COM是一组规范、CoClass……什么东东?我只知道CoCreateInstance。
COM由一个对象继承并实现一个(或多个)接口,可以在这些接口之间互相查询。类厂就是建立这个实际对象的工厂。
COM由一个对象继承并实现一个(或多个)接口,可以在这些接口之间互相查询。类厂就是建立这个实际对象的工厂。
解决方案 »
- OnDestroy中设置线程结束标志的问题
- VC下启动matlab生成的exe的问题!
- 150分!捕获消息或找到一个SDK
- 高手帮忙,单文档多视图菜单的问题
- 请教 - 让播放器播放自定义的视频格式 - 就是写个解码器
- 讨论关于串口通讯过程中硬件握手问题
- 请教各位大虾,如何改变Button控件的字体
- 200分换取《精通Visual C++图像编程》的配套光盘?图像处理里还有一个同样的帖子!
- 请教windows中鼠标抓词的原理
- 程序自启动时调用dll,程序启动后,不执行其功能
- -------------xxxbird来拿分!--------------
- 如何获取一个运行的IE实例,并跳转到相应的URL中?
比如定义接口
struct IMyInteface:public IUnknown
{
virtual MyFuc()
}
一般
struct IUnknown
{
virtual QueryInterface(int nIid,void **ppv);
virtual Release();
virtual AddRef();
}
然后一个类继承并实现这个接口
class MyCom:public :IMyInteface
{
实现过程略
};
因为外部要动态的生成对象并使用其方法所以要有类厂
class CFactory
{
其他略
HRESULT CreateInstance(int clsid,int nId,void** ppv)
{
if(clsid==其实你定义的一个值)
{
CMyCom *pMyCom=new CMyCom();
pMyCom->QueryInterface(nId,ppv);
在这里就会得到一个指向对象的指针,至于QueryInterface只是通过强制转换得到 的 对象的不一样的指针而已
}
}
};
外部对象调用com的方法都要通过类厂动态生成对象,不管是动态库也好可执行程序也好,外部都要有个入口来调用类厂的方法生成对象,比如动态库的CoGetClassObject.
看是不是通过这样获得一个对象的指针(IMyInteface)*pMyCom,这样COM的接口就暴露在外部啦