私の疑いがばかげているか愚かであるならば、親切に私を許してください。私はDirectXプログラミングにまったく慣れていません。C ++の知識(非常に基本的なCOMの知識)を持っているだけです。
以下のコードサンプルは、MSDNのD3Dデバイスの作成からのものであり、D3Dデバイスを最初から作成する方法を説明しています。
MyDoubtは:
ここで、関数「pD3D-> CreateDeviceEx()」はパラメーターHWNDhwndを取ります。D3Dデバイスのインターフェイスでいくつかの関数を使用する必要があるコンマドラインC++win32アプリからD3Dデバイスを作成しようとするとどうなりますか。HWNDフィールドを取得するにはどうすればよいですか。この場合、D3Dデバイスを作成するにはどうすればよいですか。詳細に説明してください。
HRESULT InitD3D9Ex( /* IN */ HWND hWnd, /* OUT */ IDirect3DDevice9Ex ** ppD3DDevice )
{
HRESULT hr = E_FAIL;
IDirect3D9Ex * pD3D = NULL;
IDirect3DDevice9Ex * pDevice = NULL;
if(ppD3DDevice == NULL)
{
return hr;
}
// Create the D3D object, which is needed to create the D3DDevice.
if(FAILED(hr = Direct3DCreate9Ex( D3D_SDK_VERSION, &pD3D )))
{
*ppD3DDevice = NULL;
return hr;
}
// Set up the structure used to create the D3DDevice.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
// Create the Direct3D device.
if( FAILED( hr = pD3D->CreateDeviceEx( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, NULL, &pDevice ) ) )
{
*ppD3DDevice = NULL;
return hr;
}
// Device state would normally be set here
*ppD3DDevice = pDevice;
return hr;
}