CreateWindow創建失敗的問題
今天重寫了一下3D程序的架構,基本上是參考DX9b那套構架寫的,發現CreateWindow返回NULL,而且GetLastError()也返回0,一時很奇怪,后來上網查了一下,才發現是WndProc函數的問題,我代碼如下:
if( m_hWnd == NULL) 
{
// Register the windows class
WNDCLASS wndClass =
{ 0, WndProc, 0, 0, hInst,
LoadIcon( hInst, MAKEINTRESOURCE(IDI_MY3DGRAPHIC) ),
LoadCursor( NULL, IDC_ARROW ),
(HBRUSH)GetStockObject(WHITE_BRUSH),
NULL, m_szWindowClass };
RegisterClass( &wndClass );
// Set the window's initial style
m_dwWindowStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE;
// Set the window's initial width
RECT rc;
SetRect( &rc, 0, 0, m_dwCreationWidth, m_dwCreationHeight );
AdjustWindowRect( &rc, m_dwWindowStyle, true );
// Create the render window
m_hWnd = CreateWindow( m_szWindowClass,
m_strWindowTitle,
m_dwWindowStyle,
CW_USEDEFAULT,
CW_USEDEFAULT,
(rc.right - rc.left),
(rc.bottom - rc.top),
0,
NULL, //LoadMenu( hInstance, MAKEINTRESOURCE(IDC_MY3DGRAPHIC) ),
hInstance,
0 );
WndProc代碼如下:
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )

{
return g_sApp->MsgProc( hWnd, uMsg, wParam, lParam );
}調用CreateWindow時,CreateWindow會調用一次WndProc,并且要求WndProc返回TRUE,因此要注意該問題。
posted on 2008-08-14 22:36 狂爛球 閱讀(8608) 評論(6) 編輯 收藏 引用 所屬分類: Windows編程

