CWnd::GetSystemMenu

提供应用程序访问控制菜单复制和修改。

CMenu* GetSystemMenu( 
   BOOL bRevert  
) const;

参数

  • bRevert
    指定要执行的操作。 如果 bRevert 是 FALSEGetSystemMenu 将处理返回到当前正在使用中的控制菜单的副本。 此副本以及控制菜单最初是相同的,但是可以通过修改。 如果 bRevert 是 TRUEGetSystemMenu 重置控件菜单到默认状态。 可修改,控制菜单,如果有,则销毁上。 返回值在这种情况下未定义。

返回值

如果 bRevert 是 FALSE,标识控制菜单的副本。 如果 bRevert 是 TRUE,返回值是不确定的。

返回的指针可能是瞬态的,不应存储以供将来使用。

备注

不使用 GetSystemMenu 使其自身复制控制菜单的所有窗口收到标准控件菜单。

GetSystemMenu 成员函数返回的指针可用于以 CMenu::AppendMenuCMenu::InsertMenuCMenu::ModifyMenu 功能更改控制菜单。

菜单控件最初包含项目标识的各个ID值(如 SC_CLOSESC_MOVESC_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

请参见

参考

CWnd 类

层次结构图

CMenu::AppendMenu

CMenu::InsertMenu

CMenu::ModifyMenu

GetSystemMenu