读书人

EnableMenuItem API的使用解决方法

发布时间: 2012-02-14 19:19:19 作者: rapoo

EnableMenuItem API的使用 - C++ Builder / Windows SDK/API
VC平台下新建的win app工程,想测试下菜单变灰,但似乎没效果?

WndProc:

C/C++ code
case IDM_INIT:{    Init(hWnd);    break;}


case IDM_INIT:
{
Init(hWnd);
break;
}

Init:
C/C++ code
void Init(HWND hWnd){    HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDC_MENU));    if (NULL == hMenu)    {        MessageBox(hWnd, "Ok", "Menu null", MB_OK);        return ;    }    HMENU hSubMenu = GetSubMenu(hMenu, 1);    if (NULL == hSubMenu)    {        MessageBox(hWnd, "Ok", "SubMenu null", MB_OK);        return ;    }    if (EnableMenuItem(hSubMenu, 0, MF_BYPOSITION | MF_GRAYED))    {        MessageBox(hWnd, "Ok", "Init finished", MB_OK);    }    DestroyMenu(hMenu);}


C/C++ code
void Init(HWND hWnd){    HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDC_MENU));    if (NULL == hMenu)    {        MessageBox(hWnd, "Ok", "Menu null", MB_OK);        return ;    }    if (EnableMenuItem(hMenu, IDM_START, MF_BYPOSITION | MF_ENABLED))    {        MessageBox(hWnd, "Ok", "Init finished", MB_OK);    }    DestroyMenu(hMenu);}



[解决办法]
C/C++ code
void Init(HINSTANCE hInstance, HWND hWnd){    // HMENU hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX));        HMENU hMenu = GetMenu(hWnd);    if (NULL == hMenu)    {        MessageBox(hWnd, L"Ok", L"Menu null", MB_OK);        return ;    }    if (EnableMenuItem(hMenu, IDM_ABOUT, MF_DISABLED))    // 设置 关于 菜单为不能    {        MessageBox(hWnd, L"Ok", L"Init finished", MB_OK);    }    DestroyMenu(hMenu); } 

读书人网 >C++ Builder

热点推荐