2011-06-20 131 views
3

我寫了一個小程序來創建一個窗口。我之前製作過這個節目,但現在我試圖爲自己回憶所有的事情。 當我完成編寫程序時,窗口不會出現,當我將我的代碼與我正在學習的書相比較時,它也是一樣的。我錯過了什麼/做錯了什麼?窗口不出現

#include <windows.h> 
#include <WindowsX.h> 


LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) 
{ 
    HWND hWnd; 

    // information for the window class 
    WNDCLASSEX wc; 
    ZeroMemory(&wc, sizeof(WNDCLASSEX)); 


    wc.cbSize = sizeof(WNDCLASSEX); 
    wc.style = CS_HREDRAW | CS_VREDRAW; 
    wc.lpfnWndProc = WindowProc; 
    wc.hInstance = hInstance; 
    wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW; 
    wc.lpszClassName = "WindowClass1"; 

    RegisterClassEx(&wc); 

    // Create Window 
    hWnd = CreateWindowEx(NULL, 
          "WindowClass", 
          "My Program", 
          WS_OVERLAPPEDWINDOW, 
          100, 
          100, 
          600, 
          480, 
          NULL, 
          NULL, 
          hInstance, 
          NULL); 


    ShowWindow(hWnd, SW_SHOWDEFAULT); 



    MSG msg; 

    while(GetMessage(&msg, NULL, 0,0)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
    return msg.wParam; 
} 


LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    switch(message) 
    { 
     case WM_DESTROY: 
     { 
      PostQuitMessage(0); 
      return 0; 
     } break; 
    } 
    return DefWindowProc(hWnd, message, wParam, lParam); 
} 
+0

什麼時候你運行它是什麼發生? –

回答

3

比較類名:

wc.lpszClassName = 「WindowClass1」;

的hWnd = CreateWindowEx(NULL, 「WindowClass」,...

找到這些錯誤的最好方法是檢查每個API的返回碼。

+0

Aaahh。感謝您的幫助! –

+0

爲什麼不只是#define MY_CLASS_NAME _T(「WindowClass1」)? – Ajay

+1

@Ajay:由於OP使用C++,所以'const char * className =「WindowClass1」;'更合適 –