下面是我的程序代码: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个画面进行切换(刷新画面需要一些时间),在激活的画面还没完全显示(即被上一画面遮去的一部分显示为白色),查看添加的系统菜单,发现它不见了。当画面完全刷新完毕时,自己添加的系统菜单又出现了。请各位大虾帮忙把把脉,这个问题困扰俺很久了,先谢了~~~~~~~~~~
{
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个画面进行切换(刷新画面需要一些时间),在激活的画面还没完全显示(即被上一画面遮去的一部分显示为白色),查看添加的系统菜单,发现它不见了。当画面完全刷新完毕时,自己添加的系统菜单又出现了。请各位大虾帮忙把把脉,这个问题困扰俺很久了,先谢了~~~~~~~~~~
如果是这样,那是正常的,刷新也是一部分一部分刷新.建议可以刷新函数里主动调一下pSysMenu->ShowWindow(SW_SHOW). pSysMenu设为成员变量吧.
// 响应对话框的 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);
}