gpt4 book ai didi

c++ - CreateWindow 卡住

转载 作者:行者123 更新时间:2023-11-28 02:41:25 24 4
gpt4 key购买 nike

我为我正在编写的 GUI 系统编写了一个主窗口类。在主窗口的构造函数中,它使用 CreateWindow() 函数创建一个 Windows 窗口。该窗口按预期正常显示,但我无法捕获标题栏并将其在屏幕上移动。它完全卡住了。这是构造函数中的代码。

//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);
}

现在我有一个单独的 EventManager,它包含驻留在 GtApplication 中的所有 PeekMessage 处理。问题又是为什么窗口卡住并且不响应任何标题栏操作。我无法移动、最小化、最大化或关闭它。任何帮助将不胜感激。先感谢您。此致,安东尼·丹尼尔斯

最佳答案

如果您不在 WM_PAINT 处理程序中调用 BeginPaint/EndPaint,则会出现由无限数量的 WM_PAINT 消息引起的无限循环。

关于c++ - CreateWindow 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com