点击几下后Winapi菜单冻结

WinAPI menu freezes after some clicks

本文关键字:Winapi 菜单 冻结 几下      更新时间:2023-10-16

我在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时,您可能会用尽手柄。此功能被称为很多!

在应用程序初始化期间创建一次菜单。