Menu MFC菜单不是绘图,而是白色空白
我正在做一些窗口定制的东西。 我删除了CFrameWnd的标题栏和边框,并添加了我自己的标题栏。 看起来工作不错。 但如果我将菜单添加到此窗口,菜单将位于此窗口的顶部。(在我的标题栏上方) 因此,我添加了新的CFrameWnd并将我的菜单设置为这个新的CFrameWnd。 这是代码Menu MFC菜单不是绘图,而是白色空白,menu,mfc,Menu,Mfc,我正在做一些窗口定制的东西。 我删除了CFrameWnd的标题栏和边框,并添加了我自己的标题栏。 看起来工作不错。 但如果我将菜单添加到此窗口,菜单将位于此窗口的顶部。(在我的标题栏上方) 因此,我添加了新的CFrameWnd并将我的菜单设置为这个新的CFrameWnd。 这是代码 CMenu * pMenu = this->GetMenu(); if( pMenu != NULL ) { this->SetMenu(NULL); m_pMenuWnd = new
CMenu * pMenu = this->GetMenu();
if( pMenu != NULL )
{
this->SetMenu(NULL);
m_pMenuWnd = new CMenuWindow();
m_pMenuWnd->Create(NULL, NULL, 0, m_WindowRects.MenuRect, this, 0, NULL);
m_pMenuWnd->SetMenu(pMenu);
m_pMenuWnd->ShowWindow(SW_NORMAL);
}
我在自定义的CFrameWnd的OnSize、OnMove消息处理程序中添加了这个菜单窗口的move处理程序,用于正确的定位
看起来不错。
但当我最小化并恢复它的位置时,菜单窗口的位置只是白色的空白
但若我把光标移到那个里,菜单就在那个里。
我做错了什么?
我查了一下OnCtlColor,但它甚至没有被调用
这是CMENU窗口代码
BEGIN_MESSAGE_MAP(CMenuWindow, CFrameWnd)
ON_WM_CREATE()
ON_WM_ACTIVATE()
ON_WM_KEYUP()
ON_WM_SYSKEYUP()
END_MESSAGE_MAP()
void CMenuWindow::OnDraw(CDC* pDC)
{
CRect clRect;
GetClientRect(&clRect);
}
// CMenuView message handlers
int CMenuWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
ModifyStyle(WS_CAPTION, WS_CLIPCHILDREN);
ModifyStyleEx(WS_EX_CLIENTEDGE,0);
return 0;
}
CMenuWindow是什么类型的对象?它看起来像是一个CWnd。如果是,它的代码是什么样子的?谢谢你的回复。CMenuWindow派生自CFrameWnd。