CWnd::GetSystemMenu
提供应用程序访问控制菜单复制和修改。
CMenu* GetSystemMenu(
BOOL bRevert
) const;
参数
- bRevert
指定要执行的操作。 如果 bRevert 是 FALSE,GetSystemMenu 将处理返回到当前正在使用中的控制菜单的副本。 此副本以及控制菜单最初是相同的,但是可以通过修改。 如果 bRevert 是 TRUE,GetSystemMenu 重置控件菜单到默认状态。 可修改,控制菜单,如果有,则销毁上。 返回值在这种情况下未定义。
返回值
如果 bRevert 是 FALSE,标识控制菜单的副本。 如果 bRevert 是 TRUE,返回值是不确定的。
返回的指针可能是瞬态的,不应存储以供将来使用。
备注
不使用 GetSystemMenu 使其自身复制控制菜单的所有窗口收到标准控件菜单。
GetSystemMenu 成员函数返回的指针可用于以 CMenu::AppendMenu、 CMenu::InsertMenu或 CMenu::ModifyMenu 功能更改控制菜单。
菜单控件最初包含项目标识的各个ID值(如 SC_CLOSE、 SC_MOVE和 SC_SIZE。 在控制菜单的项目生成 WM_SYSCOMMAND 消息。 所有的预定义控件菜单项比0xF000具有ID号大。 如果应用程序将项添加到菜单控件,所以它比F000应使用ID号。
Windows在标准菜单控件可以自动使项目不可用。 CWnd 可以通过响应执行自己的选择或以下 WM_INITMENU 信息,传播,在所有菜单显示之前。
示例
// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUT);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
要求
Header: afxwin.h