功能表及其他资源(四十八)

2010-12-30 21:13:27 · 作者: · 浏览: 36432
rogram\n")
TEXT ("(c) Charles Petzold, 1998"),
szAppName, MB_OK | MB_ICONINFORMATION) ;
return 0 ;

case IDM_SYS_HELP:
MessageBox ( hwnd, TEXT ("Help not yet implemented!"),
szAppName, MB_OK | MB_ICONEXCLAMATION) ;
return 0 ;

case IDM_SYS_REMOVE:
GetSystemMenu (hwnd, TRUE) ;
return 0 ;
}
break ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

三个功能表ID在POORMENU.C的开始部分定义:

#define IDM_ABOUT 1
#define IDM_HELP 2
#define IDM_REMOVE 3

在程式视窗建立之後,POORMENU得到一个系统功能表的代号:

hMenu = GetSystemMenu (hwnd, FALSE) ;

第一次呼叫GetSystemMenu时,您应该为修改功能表作准备,将第二个参数设定为FALSE。

使用四个AppendMenu呼叫来实作对功能表的修改:

AppendMenu (hMenu, MF_SEPARATOR, 0, NULL) ;
AppendMenu (hMenu, MF_STRING, IDM_SYS_ABOUT, TEXT ("About...")) ;
AppendMenu (hMenu, MF_STRING, IDM_SYS_HELP, TEXT ("Help...")) ;
AppendMenu (hMenu, MF_STRING, IDM_SYS_REMOVE, TEXT ("Remove Additions"));

第一个AppendMenu呼叫是添加分隔条。选择「Remove Additions」功能表项将使POORMENU删除这些附加的功能表项,这只要把第二个参数设定为TRUE,再次呼叫GetSystemMenu即可:

GetSystemMenu (hwnd, TRUE) ;