COM 和 ActiveX 如何入门 帮忙推荐下书籍,资料,视频教程之类的最好有力透纸背的文章快速入门,呵呵 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 com本质论c++对象模型COM原理与应用深入解析ATL...... 还有 com技术内幕 也是一本不错看的书。 深入解析ATL,有理论,也有实践 没有理论做基础,实践也只是照葫芦画瓢,会让你摸不着头脑,越来越晕。首先看COM本质论的头两章,然后看COM技术内幕,然后再回头把COM本质论剩下的看完。关于实践性强点的可以看COM原理与应用中相关的如何用VC开发COM的部分。 com技术内幕挺不错的哈深入解析ATL 看来大家认为 com技术内幕 比 COM原理与应用 要好一些是吧 COM原理与应用我们这学期学组件技术就是这本书,感觉不错 Any one who has better idea? COM/COM+技术内幕ATL开发指南电子版的书,可以发给你 找别人做的COM工程先一样画一画,然后有些概念以后,再看以上的那些COM书就会好多了 也在学习COM的路上晃荡着,希望能尽快有COM的工程拿来练练~~ COM--I have no idea about it right now 我这次是专门进来告诉你一个好网站哦....http://www.vckbase.com/document/listdoc.asp?sclsid=1701 C++功力深厚的话,COM也没啥难的,不过com不是小公司玩的起的,随便写个小功能,代码一大堆, COM本质论!!好书一本!绝对的!另外 你好好看看下面这段代码,就明白com是咋回事了!!#include <stdio.h>#include <malloc.h>#include <iostream.h>#include <objbase.h>const IID IID_IX = {0xb9b8ace1, 0xce14, 0x11d0,{0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}};const IID IID_IY = {0xb9b8ace2, 0xce14, 0x11d0, {0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}};const IID IID_IZ = {0xb9b8ace3, 0xce14, 0x11d0,{0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}};interface IX: IUnknown{virtual void __stdcall fx(void) = 0;};interface IY: IUnknown{virtual void __stdcall fy(void) = 0;};class CCOM_OBJECT : public IX, public IY{public:CCOM_OBJECT() :ref_count(0) {}~CCOM_OBJECT() {}private:virtual HRESULT __stdcall QueryInterface(const IID &iid, void **iface);virtual ULONG __stdcall AddRef();virtual ULONG __stdcall Release();virtual void __stdcall fx(void){ cout<<"function fx has been called."<<endl;}virtual void __stdcall fy(void){ cout<<"function fy has been called."<<endl;}int ref_count;};HRESULT __stdcall CCOM_OBJECT::QueryInterface(const IID &iid, void **iface){if(iid == IID_IUnknown){ cout<<"Requesting IUnknown interface"<<endl; *iface = (IX*)this;}if(iid == IID_IX){ cout<<"Requesting IX interface"<<endl; *iface = (IX*)this;}else if(iid == IID_IY){ cout<<"Requesting IY interface"<<endl; *iface = (IY*)this;}else{ cout<<"Requesting unknown interface!"<<endl; *iface = NULL; return E_NOINTERFACE;}((IUnknown *)(*iface))->AddRef();return S_OK;}ULONG __stdcall CCOM_OBJECT::AddRef(){cout<<"Adding a reference"<<endl;return ++ref_count;}ULONG __stdcall CCOM_OBJECT::Release(){cout<<"Deleting a reference."<<endl;if(-ref_count == 0){ delete this; return 0;}else return ref_count;}IUnknown *CoCreateInstance(void){IUnknown *comm_obj = (IX *)new(CCOM_OBJECT);cout<<"creating comm object"<<endl;comm_obj->AddRef();return comm_obj;}void main(void){IUnknown *punknown = CoCreateInstance();IX *pix = NULL;IY *piy = NULL;punknown->QueryInterface(IID_IX, (void **)&pix);pix->fx();pix->Release();punknown->QueryInterface(IID_IY, (void **)&piy);piy->fy();piy->Release();punknown->Release();} com本质论COM原理与应用com技术内幕已经买了以上三本,苦读中~~~感谢各位 vc2010,winhttp读取网页,显示乱码,如何解决 mobile中发短信的api? 100分紧急求助--关于ListBox中插入位图的问题 请帮助我!!! 高分求购栅格类或控件 如何让EDIT控件分行显示数据? 入门菜鸟的问题~CFile::Read、CFile::Write能不能读写double型的数据? 怎样知道自己程序的帧速率? 怎么把一个static控件和一个变量的对象相联系 程序员职业瓶颈 win32 SDK编程的时候用哪个生成工具生成了一个MFC的对话框如何把对话框给用SDK显示出来呢? 关于getaddrinfo api源文件的编译
c++对象模型
COM原理与应用
深入解析ATL
......
还有 com技术内幕 也是一本不错看的书。
首先看COM本质论的头两章,然后看COM技术内幕,然后再回头把COM本质论剩下的看完。
关于实践性强点的可以看COM原理与应用中相关的如何用VC开发COM的部分。
深入解析ATL
http://www.vckbase.com/document/listdoc.asp?sclsid=1701
#include <stdio.h>
#include <malloc.h>
#include <iostream.h>
#include <objbase.h>const IID IID_IX =
{
0xb9b8ace1, 0xce14, 0x11d0,
{0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}
};const IID IID_IY =
{
0xb9b8ace2, 0xce14, 0x11d0,
{0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}
};const IID IID_IZ =
{
0xb9b8ace3, 0xce14, 0x11d0,
{0xae, 0x58, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0}
};interface IX: IUnknown
{
virtual void __stdcall fx(void) = 0;
};interface IY: IUnknown
{
virtual void __stdcall fy(void) = 0;
};class CCOM_OBJECT : public IX, public IY
{
public:
CCOM_OBJECT() :ref_count(0) {}
~CCOM_OBJECT() {}
private:
virtual HRESULT __stdcall QueryInterface(const IID &iid, void **iface);
virtual ULONG __stdcall AddRef();
virtual ULONG __stdcall Release();virtual void __stdcall fx(void)
{
cout<<"function fx has been called."<<endl;
}
virtual void __stdcall fy(void)
{
cout<<"function fy has been called."<<endl;
}int ref_count;
};HRESULT __stdcall CCOM_OBJECT::QueryInterface(const IID &iid, void **iface)
{
if(iid == IID_IUnknown)
{
cout<<"Requesting IUnknown interface"<<endl;
*iface = (IX*)this;
}if(iid == IID_IX)
{
cout<<"Requesting IX interface"<<endl;
*iface = (IX*)this;
}
else if(iid == IID_IY)
{
cout<<"Requesting IY interface"<<endl;
*iface = (IY*)this;
}
else
{
cout<<"Requesting unknown interface!"<<endl;
*iface = NULL;
return E_NOINTERFACE;
}((IUnknown *)(*iface))->AddRef();return S_OK;
}ULONG __stdcall CCOM_OBJECT::AddRef()
{
cout<<"Adding a reference"<<endl;
return ++ref_count;
}ULONG __stdcall CCOM_OBJECT::Release()
{
cout<<"Deleting a reference."<<endl;if(-ref_count == 0)
{
delete this;
return 0;
}
else
return ref_count;
}IUnknown *CoCreateInstance(void)
{
IUnknown *comm_obj = (IX *)new(CCOM_OBJECT);cout<<"creating comm object"<<endl;comm_obj->AddRef();return comm_obj;
}void main(void)
{
IUnknown *punknown = CoCreateInstance();IX *pix = NULL;
IY *piy = NULL;punknown->QueryInterface(IID_IX, (void **)&pix);pix->fx();pix->Release();punknown->QueryInterface(IID_IY, (void **)&piy);piy->fy();piy->Release();punknown->Release();
}
COM原理与应用
com技术内幕
已经买了以上三本,苦读中~~~
感谢各位