一:创建菜单
在Windows中使用菜单都是以关键字POPUP开头,POPUP指出了一个菜单可以使用如下的ASCII名称和菜单项来定义。弹出式菜单定义必须放在{}或BEGIN、END块中。
例如:
MainMenu MENU DISCARDABLE
{
POPUP "FIle"
{
MENUITEM "Open",MENU_FILE_ID_OPEN
MENUITEM "Close",MENU_FILE_ID_CLOSE
MENUITEM "Save",MENU_FILE_ID_SAVE
MENUITEM "Exit",MENU_FILE_ID_EXIT
}
POPUP "Help"
{
MENUITEM "About",MENU_HLP_ABOUT
}
}
这里定义菜单名为MainMenu
菜单的定义块中,定义一个菜单项的语法是:MENUITEM "name",MENU_ID
MENUITEM是关键字。
当然还需要在resource.h添加MENU_ID的定义,如:
#define MENU_FILE_ID_OPEN 1000
#define MENU_FILE_ID_CLOSE 1001
#define MENU_FILE_ID_SAVE 1002
#define MENU_FILE_ID_EXIT 1003
#define MENU_HELP_ABOUT 2000
二、装载菜单
WNDCLASSEX winclass;
winclass.lpszMenuName=MAKEINTRESOURCE(MainMenu); //这里的MainMenu就是之前定义的菜单名
三、响应菜单事件消息
这是窗口菜单选择消息流
以下是消息处理程序
LPESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam){
switch(msg){
//-----
case WM_COMMAND:
{
switch(LOWORD(wparam)){ //从wparam中提取低位的WORD
case MENU_FILE_ID_OPEN:
//do something
break;
case MENU_FILE_ID_CLOSE:
//do something
break;
case MENU_FILE_ID_EXIT:
//do something
break;
}
}
//-----
}
}