MDI中如何实现工具栏随着子窗口的不同而显示/隐藏 MDI中,包含多个文档模板,工具栏显示在在MainFrame中,要求当一种子窗口活动时,显示自己对应的工具栏,隐藏其他子窗口对应的工具栏. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在父窗口的PreTranslateMessage中处理WM_MOVE消息就行了。 pmwl2008: 如何处理,能详细具体点吗? BOOL CFrameWnd::PreTranslateMessage(MSG* pMsg){ if (pMsg->hwnd == 你的子窗口句柄) { switch(pMsg->message) { case WM_MOVE: { //做你想做的事。 } break; default: } } return CWnd::PreTranslateMessage(pMsg);} BOOL CFrameWnd::PreTranslateMessage(MSG* pMsg){ CWnd *pWnd; pWnd=this->FromHandle(pMsg->hwnd); if(pWnd!=NULL) { if(pWnd->IsKindOf(RUNTIME_CLASS(C3DSFrame))) { AfxMessageBox("Is C3DSChildFrame"); switch(pMsg->message) { case WM_MOVE: { AfxMessageBox("C3DSChildFrame WM_MOVE"); if(this->m_wndToolBar_3DSView.m_hWnd) { this->ShowControlBar(&m_wndToolBar_3DSView,TRUE,FALSE); } break; } default: break; } } else { if(this->m_wndToolBar_3DSView.m_hWnd) { this->ShowControlBar(&m_wndToolBar_3DSView,FALSE,FALSE); } } } return CMDIFrameWnd::PreTranslateMessage(pMsg);}/////////////////////////////添加上面的代码后,打开一个C3DSChildFrame子窗口(MDIChildWnd), AfxMessageBox("Is C3DSChildFrame")会执行,AfxMessageBox("C3DSChildFrame WM_MOVE")不会执行,工具栏没有显示出来. 我上面只是个列子.并不是一定是处理WM_MOVE消息.你的窗口活动是指什么消息就处理什么消息就可以了呀. 哦,问题后来基本解决了.重载void CMainFrame::OnIdleUpdateCmdUI(),根据子窗口的类型显示/隐藏工具栏. SDI隐藏非模态对话框的问题 CListCtrl问题 CTreeCtrl发送TVN_ITEMEXPANDED的问题 小弟拜师学艺,望大虾们赐教,谢谢 诚聘VC.net和Linux C程序开发人员 请教大虾:edit控件中滚屏问题 现在做网络通信,NETBIOS API一般用在什么场合? 如何编写web控件,普通的控件放到web页里有问题。 求VC6的下载地址?每粉了 关于在对话框中加一横线的问题! 一个简单的列表框应用 请问哪位有费尔防火墙2.0完整的源码及文档??
{
if (pMsg->hwnd == 你的子窗口句柄)
{
switch(pMsg->message)
{
case WM_MOVE:
{
//做你想做的事。
}
break;
default:
}
} return CWnd::PreTranslateMessage(pMsg);
}
{ CWnd *pWnd;
pWnd=this->FromHandle(pMsg->hwnd);
if(pWnd!=NULL)
{
if(pWnd->IsKindOf(RUNTIME_CLASS(C3DSFrame)))
{
AfxMessageBox("Is C3DSChildFrame");
switch(pMsg->message)
{
case WM_MOVE:
{
AfxMessageBox("C3DSChildFrame WM_MOVE");
if(this->m_wndToolBar_3DSView.m_hWnd)
{
this->ShowControlBar(&m_wndToolBar_3DSView,TRUE,FALSE);
}
break;
}
default:
break;
}
}
else
{
if(this->m_wndToolBar_3DSView.m_hWnd)
{
this->ShowControlBar(&m_wndToolBar_3DSView,FALSE,FALSE);
}
}
} return CMDIFrameWnd::PreTranslateMessage(pMsg);
}/////////////////////////////
添加上面的代码后,打开一个C3DSChildFrame子窗口(MDIChildWnd), AfxMessageBox("Is C3DSChildFrame")会执行,AfxMessageBox("C3DSChildFrame WM_MOVE")不会执行,工具栏没有显示出来.