下面是我的程序代码:BOOL CCtrlTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
                 //Add my system menu
        CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAddMemoryScreenMenu(_T("My System Menu"));
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, ID_MENUITEM_ADD_MEMORY_SCREEN, strAddMemoryScreenMenu);
}
        
       。
}
注:#define ID_MENUITEM_ADD_MEMORY_SCREEN   8512在普通情况下,自己添加的Menu会消失。但当机器比较卡时,在2个画面进行切换(刷新画面需要一些时间),在激活的画面还没完全显示(即被上一画面遮去的一部分显示为白色),查看添加的系统菜单,发现它不见了。当画面完全刷新完毕时,自己添加的系统菜单又出现了。请各位大虾帮忙把把脉,这个问题困扰俺很久了,先谢了~~~~~~~~~~

解决方案 »

  1.   

    LZ,结果是菜单会显示,只是在界面刷新的过程中,菜单没有显示,对吗?
    如果是这样,那是正常的,刷新也是一部分一部分刷新.建议可以刷新函数里主动调一下pSysMenu->ShowWindow(SW_SHOW). pSysMenu设为成员变量吧. 
      

  2.   


    // 响应对话框的 WM_INITMENUPOPUP 消息void CMyDlgDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
    {
    CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu); // TODO: Add your message handler code here
    if(bSysMenu)
    pPopupMenu->AppendMenu(MF_SEPARATOR); 
    }