5.COM基础 - DirectX

 Win32App - > HEL/HAL -> Hardware
HEL( Hardware Emulation Layer ) 如果硬件不支持某个功能,HEL就会加入,通过软件运算来完成任务。
HAL( Hardware Abstraction Layer ) 只有当硬件能够支持所要执行的功能时 HAL才被使用。

DirectDraw:控制视频显示的主要图形渲染和2D位图引擎.所有图形的绘制都必须通过它。
DirectInput:鼠标、键盘等等..
DirectPaly:网络
DirectAudio:
DirectShow:流媒体

=======================================================================

COM是一个或一套实现了大量接口的类。

所有接口必须从 IUnknown派生。
virtual HRSULT __stdcall QueryInterFace( const IID &iid, (void ** )ip ) = 0 ;
virtual HRSULT __stdcall AddRef() = 0;
virtual HRSULT __stdcall Release() = 0;

QueryInterFace()中自动调用AddRef(), 需要人工调用Release();      

用CoCreateInstance() 或 ComCreate()创建COM对象的初始IUnknown实例。 CoCreateInstance()自身条用 Addref(),许调用Release()释放。

真正的COM对象必须被合理地创建,并且要在注册表中注册。

在加入任何新接口的同时,仍然必须实现旧接口。

///
void main(void)
{

// create the main COM object
IUnknown *punknown = CoCreateInstance(); //已经调用了一次AddRef();

// create two NULL pointers the IX and IY interfaces
IX *pix=NULL;
IY *piy=NULL;

// from the original COM object query for interface IX
punknown->QueryInterface(IID_IX, (void **)&pix);

// try some of the methods of IX
pix->fx();

// release the interface
pix->Release();
// now query for the IY interface
punknown->QueryInterface(IID_IY, (void **)&piy);

// try some of the methods
piy->fy();

// release the interface
piy->Release();

// release the COM object itself
punknown->Release();

} // end main
///


=======================================================================

应用DirectX COM对象

The libraries you need are:
DDRAW.LIB
DSOUND.LIB
DINPUT.LIB
DINPUT8.LIB
DSETUP.LIB
DPLAYX.LIB
D3DIM.LIB
D3DRM.LIB

DDGUID.LIB
=======================================================================

创建和使用DirectX接口

1.包含 DDRAW.LIB输入库
2. #include <DDRAW.H >
3. HRESULT WINAPI DirectDrawCrateEx( GUID FAR *lpGUID, LPVOID *lplpDD, REFIID iid, IUnknow FAR *pUnkOuter );

///

LPDIRECTDRAW7 lpdd;  // version 7.0

// create version 7.0 DirectDraw object interface
DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL);

///


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值