Original Post
Hello ! I've a problem with this code : #include #define SAFE_RELEASE(p) if (p != NULL) { p->Release(); } else return E_FAIL; class DIRECTXMANAGEMENT { private: LPDIRECT3D9 m_D3DObject; LPDIRECT3DDEVICE9 m_D3DDevice; HWND m_MainWindowHandle; public: DIRECTXMANAGEMENT(); ~DIRECTXMANAGEMENT(); void InitWindow(); void GameLoop(); HRESULT InitD3D(); HRESULT RenderScene(); HRESULT DestroyD3DObjects(); }; LRESULT WINAPI MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); } DIRECTXMANAGEMENT::DIRECTXMANAGEMENT() { InitWindow(); InitD3D(); GameLoop(); } void DIRECTXMANAGEMENT::GameLoop() { MSG msg; ZeroMemory(&msg, sizeof(msg)); PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE); while (msg.message != WM_QUIT) { ShowWindow(m_MainWindowHandle, SW_SHOWDEFAULT); UpdateWindow(m_MainWindowHandle); if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else RenderScene(); } } DIRECTXMANAGEMENT::~DIRECTXMANAGEMENT() { DestroyD3DObjects(); } void DIRECTXMANAGEMENT::InitWindow() { WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, "Direct3DA", NULL}; RegisterClassEx(&wc); m_MainWindowHandle = CreateWindow("Direct3DA", "D3DApp", WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, GetDesktopWindow(), NULL, wc.hInstance, NULL); } HRESULT DIRECTXMANAGEMENT::InitD3D() { if ((m_D3DObject = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) return E_FAIL; D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = true; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; if (FAILED(m_D3DObject->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_MainWindowHandle, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &m_D3DDevice))) return E_FAIL; return S_OK; } HRESULT DIRECTXMANAGEMENT::RenderScene() { m_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); if (SUCCEEDED(m_D3DDevice->BeginScene())) { // Geometric objects here m_D3DDevice->EndScene(); } m_D3DDevice->Present(NULL, NULL, NULL, NULL); return S_OK; } HRESULT DIRECTXMANAGEMENT::DestroyD3DObjects() { SAFE_RELEASE(m_D3DObject); SAFE_RELEASE(m_D3DDevice); return S_OK; } int APIENTRY WinMain (HINSTANCE, HINSTANCE, LPSTR, int) { DIRECTXMANAGEMENT dxm; ZeroMemory(&dxm, sizeof(dxm)); dxm.GameLoop(); dxm.DestroyD3DObjects(); return 0; } At the execution, the program dumps and the following window displayed : http://img57.imageshack.us/img57/8080/snap1qj2.png Thank for help