• λ我爱Aspx >> Asp.Net >> VC++的菜单控制和自绘菜单。
  • VC++的菜单控制和自绘菜单。

  • :未知  Դ:internet  :2007-5-5 19:47:16  ؼ:
  • 菜单控制

    为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态

    需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。

    //Disable MFC from automatically disabling menu items.

    m_bAuoMenuEnable=FALSE;

    //Now enable the menu item.

    CMenu* pMenu=GetMenu ();

    ASSERT_VALID (pMenu);

    pMenu->EnableMenuItem (ID_MENU_ITEM,MF_BYCOMMAND | MF_ENABLED);

    如何给系统菜单添加一个菜单项

    给系统菜单添加一个菜单项需要进行下述三个步骤:

    首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...

    可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;

    其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加两个新的菜单项:

    int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)

    {

    //Make sure system menu item is in the right range.

    ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM);

    ASSERT (IDM-MYSYSITEM<0xF000);

    //Get pointer to system menu.

    CMenu* pSysmenu=GetSystemmenu (FALSE);

    ASSERT_VALID (pSysMenu);

    //Add a separator and our menu item to system menu.

    CString StrMenuItem (_T ("New menu item"));

    pSysMenu->Appendmenu (MF_SEPARATOR);

    pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem);

    }

    现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理

    WM_SYSCOMMAND消息并检测用户菜单的nID参数:

    void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam)

    {

    //Determine if our system menu item was selected.

    Ҷƪл˵?
  • һƪ华为亲历(转载)
    һƪ源代码推荐:vb的GUID生成算法