0

私が書いている GUI システムのメイン ウィンドウ クラスを書きました。メイン ウィンドウのコンストラクターでは、CreateWindow() 関数を使用してウィンドウ ウィンドウを作成します。ウィンドウは期待どおりに正常に表示されますが、タイトル バーをつかんで画面上で移動することはできません。完全に凍結しています。コンストラクタ内のコードは次のとおりです。

//Set up window class
WNDCLASS wnd;
wnd.cbClsExtra = 0; 
wnd.cbWndExtra = 0;
wnd.hCursor = LoadCursor(0, IDC_ARROW);
wnd.hIcon = LoadIcon(0, IDI_WINLOGO);
wnd.lpszMenuName = 0;
wnd.style = 0;
wnd.hbrBackground = 0;
wnd.lpfnWndProc = WndProc;
wnd.hInstance = GetModuleHandle(NULL);
wnd.lpszClassName = L"GtMainWindow";

//Register window class
RegisterClass(&wnd);


this->m_winID = CreateWindow(
L"GtMainWindow",      /* Classname */
L"Windows App",       /* Title Text */
WS_OVERLAPPEDWINDOW,  /* default window */
CW_USEDEFAULT,        /* Windows decides the position */
CW_USEDEFAULT,        /* where the window ends up on the screen */
500,                  /* The programs width */
500,                  /* and height in pixels */
HWND_DESKTOP,         /* The window is a child-window to desktop */
NULL,                 /* No menu */
GetModuleHandle(NULL), /* Program Instance handler */
NULL                  /* No Window Creation data */
);
ShowWindow(m_winID,SW_SHOW);

WinProc コールバック関数は次のとおりです。

//WndProc function
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch(msg) {
case WM_PAINT:
    {
        //GtWidget::PostPaint();
        return 0;
    }
case WM_CLOSE:
case WM_DESTROY:
    {
        PostQuitMessage(0);
        GtApplication* ptrApp = GtApplication::GetAppInstancePtr();
        ptrApp->Quit();
        return 0;
    }
}

return DefWindowProc(hWnd, msg, wParam, lParam);
}

これで、GtApplication 内に存在するすべての PeekMessage 処理を含む別の EventManager ができました。再度の質問は、なぜウィンドウがフリーズし、タイトル バーの操作に応答しないのかということです。移動、最小化、最大化、または閉じることができません。どんな助けでも大歓迎です。前もって感謝します。アンソニー・ダニエルズ

4

2 に答える 2