点击几下后Winapi菜单冻结
WinAPI menu freezes after some clicks
我在Win32中有一个应用程序,该应用程序在其主窗口中具有顶部菜单,此菜单中有2个带有子菜单的选项。
问题是..在其选项上单击时,它突然冻结了。其余的应用程序的其余部分一直正常响应,但是当我单击菜单选项时,按钮像按下一样向下逐渐下降,并且不显示子菜单,我需要重新启动应用程序,或者它不再起作用。
>i Thik这与内存分配有关,也许我需要释放一些分配,但是由于我是这种编程的新手,我可以说只是看它。
一些代码..我认为它在窗口过程中,我操纵wm_command有问题:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HMENU hMenubar = CreateMenu();
HMENU hFile = CreateMenu();
HMENU hEDIT = CreateMenu();
HMENU hHelp = CreateMenu();
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case ID_FILE_DIALOG2:
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, Add);
break;
case ID_FILE_TESTE:
Check();
break;
case ID_FILE_DIALOG1:
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, Conf);
break;
case ID_OPEN:
Open();
break;
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
break;
case WM_CLOSE:
DestroyWindow(hWnd);
PostQuitMessage(0);
break;
case WM_DESTROY:
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
每次调用wndproc时,您可能会用尽手柄。此功能被称为很多!
在应用程序初始化期间创建一次菜单。
相关文章:
- 无法获取菜单选择以运行函数.C++
- WinAPI挂钩鼠标
- 将执行、作业和WinAPI相乘
- 如何在桌面C++上使用 WinApi 画线
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- Winapi:屏幕截图未显示在窗口中
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- Qt with WinAPI MouseProc
- 如何在"SUBSYSTEM:WINDOWS"下显示并输出到Windows(C++ WinApi)上的
- WinAPI 无法创建按钮
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- WinAPI 检查窗口是否具有常规标题栏
- C++ 中的图形菜单
- 连接资源文件中的字符串,并将其传递给菜单项字符串 (winapi) c++
- Winapi创建选项卡菜单
- 使用 WinAPI 创建自定义菜单的最佳方法是什么
- 点击几下后Winapi菜单冻结
- WinAPI - 菜单加速器不起作用
- winapi-如何在MFC中以编程方式将多个菜单栏添加到一个框架中
- 为什么 WinAPI 中的上下文(弹出)菜单没有出现?