Вы можете запросить интерфейс IDirectDraw и посмотреть, что он делает. Я предполагаю, что произойдет сбой, если аппаратное ускорение отключено, но вы можете проверить GetCaps () или TestCooperativeLevel ().
LPDIRECTDRAW lpdd7 = NULL; // DirectDraw 7.0
// first initialize COM, this will load the COM libraries
// if they aren't already loaded
if (FAILED(CoInitialize(NULL)))
{
// error
} // end if
// Create the DirectDraw object by using the
// CoCreateInstance() function
if (FAILED(CoCreateInstance(&CLSID_DirectDraw,
NULL, CLSCTX_ALL,
&IID_IDirectDraw7,
&lpdd7)))
{
// error
}
// now before using the DirectDraw object, it must
// be initialized using the initialize method
if (FAILED(IDirectDraw7_Initialize(lpdd7, NULL)))
{
// error
}
lpdd7->Release();
lpdd7 = NULL; // set to NULL for safety
// now that we're done with COM, uninitialize it
CoUninitialize();
К сожалению, документы DirectDraw больше не включены в SDK. Вам может понадобиться более старая версия, чтобы получить образцы и файлы заголовков.