我有一个问题是由于直接3D9失败造成的:CreateDevice(......)。 当以下代码由视窗7下的锁定屏幕执行时,该代码即告失败。 由于需要,我需要在屏幕锁定时能够制造一个装置。
我在创建Device时发现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 );