第一种:
LPDIRECTDRAW lpdd = NULL; // pointer to IDirectDraw (temporary)
LPDIRECTDRAW7 lpdd7 = NULL; // pointer to IDirectDraw7 (what we want)
// get the IDirectDraw interface pointer
if (FAILED(DirectDrawCreate(NULL, &lpdd, NULL))) //这里给出对DirectDraw错误处理放法
{
// error-handling code here
}
// query for IDirectDraw7 pointer
if (FAILED(lpdd->QueryInterface(IID_IDirectDraw7, (void**)&lpdd7)))
{
// error-handling code here
}
else
{
// success! release IDirectDraw since we don't need it anymore
lpdd->Release();
lpdd = NULL;
}
第二种:
直接使用COM方法
LPDIRECTDRAW7 lpdd7; // interface pointer
// initialize COM
CoInitialize(NULL);
// create the object
CoCreateInstance(CLSID_DirectDraw, NULL, CLSCTX_ALL, IID_IDirectDraw7, (void**)&lpdd7);
// initialize the object
第三种:
DirectDrawCreateEx(
GUID FAR *lpGuid,
LPVOID *lplpDD,
REFIID iid,
IUnknown FAR *pUnkOuter
);
lpdd7->Initialize(NULL);
详细介绍参见:http://www.cnblogs.com/EmbeddedBoy/archive/2011/09/12/2173853.html