2013-06-02 130 views
0

我爲WinAPI中的遊戲製作自動點擊器,並且在主窗口中有4個簡單的按鈕。當用戶按下'開始'按鈕時,我想要打開另一個窗口,詢問他們的設置,例如點擊次數和點擊次數之間的時間。當我嘗試創建一個新窗口時,什麼都沒有發生,但其他一切都完美無缺。在按下按鈕後在WinAPI中創建一個窗口

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{ 
    switch (uMsg) 
    { 
    case WM_DESTROY: 
     { 
      PostQuitMessage(0); 
      return 0; 
     } 

    case WM_COMMAND: 
     { 
      switch (wParam) 
      { 
      case ID_START: 
       { 
        HINSTANCE hInstance = GetModuleHandle(CLASS_NAME); 

        HWND settings = CreateWindowEx(
         0, 
         L"Settings", 
         L"Settings", 
         WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CHILD, 
         100, 100, 600, 200, 
         NULL, 
         (HMENU) ID_SETTINGS, 
         hInstance, 
         NULL 
         ); 

        MSG msg = { }; 

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

        return 0; 
       } 

      case ID_QUIT: 
       { 
        PostQuitMessage(0); 
        return 0; 
       } 

      case ID_CALIB: 
       { 
        if (MessageBox(hwnd, L"You pressed Calibrate", L"Calibrate", MB_OK)) 
        { 
         return 0; 
        } 
       } 

      case ID_INFO: 
       { 
        if (MessageBox(hwnd, L"You pressed about", L"About", MB_OK)) 
        { 
         return 0; 
        } 
       } 
      } 
     } 

    case WM_PAINT: 
     { 
      PAINTSTRUCT ps; 

      HDC hdc = BeginPaint(hwnd, &ps); 

      FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW+1)); 
      EndPaint(hwnd, &ps); 

      return 0; 
     }  
    } 

    return DefWindowProc(hwnd, uMsg, wParam, lParam); 
} 

我剛剛開始使用WinAPI,所以我非常新。感謝您提前提供任何幫助!

+1

對於設置,您可能想要啓動對話框而不是創建普通窗口。 –

+0

我該怎麼做? –

+0

使用對話框編輯器和對話框過程(有點像窗口過程)創建對話框模板,並在運行時調用DialogBox。你也可以使用CreateDialog做一個非模態對話框(更像是一個普通的窗口),但對於第一次嘗試,我會堅持一個模態對話框(即DialogBox)。 –

回答

0

CreateWindowEx的第二個參數必須是您之前通過調用RegisterClass註冊的類名稱。

您在指定WS_CHILD。但一個孩子必須有一位家長。將父HWND傳遞給hwndParent參數。

+0

我做了更改之後,提示它給出了鏈接器錯誤1168.我將父窗口參數更改爲hwnd(父窗口的句柄),並將類名稱設置爲之前在代碼中定義的CLASS_NAME。 –

+0

@x,錯誤的全文是什麼? – chris

+0

1> LINK:致命錯誤LNK1168:無法打開C:\ Users \ Frank Family \ Desktop \ Sean \ C++ Projects \ Window \ Debug \ Window.exe用於編寫 –

相關問題