我有一个由Direct3D9 :: CreateDevice()失败引起的问题.在Windows 7下使用锁定屏幕执行以下代码时失败.由于要求,我需要能够在屏幕锁定时创建设备.
使用以下参数调用CreateDevice时,我收到D3DERR_INVALIDCALL错误.我已经对使用的HWND进行了广泛的实验,并仔细检查了它是否有效.我也尝试了对演示参数的各种调整无济于事.任何人以前遇到过这个或者更好地了解可能导致无效呼叫返回的原因?
同样,此故障仅在锁定屏幕时发生,当在任何其他测试状态下运行时,它成功.
D3DPRESENT_PARAMETERS pp;
ZeroMemory( &pp, sizeof(D3DPRESENT_PARAMETERS) );
pp.BackBufferFormat = D3DFMT_UNKNOWN;
pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
pp.Windowed = TRUE;
HWND focusWndHnd = GetConsoleWindow();
if ( focusWndHnd == NULL && pp.hDeviceWindow == NULL )
{
focusWndHnd = ::GetDesktopWindow();
}
IDirect3DDevice9* pd3dDevice;
IDirect3D9* pD3D = Direct3DCreate9( D3D_SDK_VERSION );
hr = pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, focusWndHnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_FPU_PRESERVE, &pp, &pd3dDevice );
Run Code Online (Sandbox Code Playgroud)