# re: vc++2008 feature package中CPaneDialog的使用方法 回复 更多评论
2010-06-29 16:47 by
改写CMainFrame的OnCmdMsg虚函数
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_dlgParams.OnCmdMsg( nID, nCode, pExtra, pHandlerInfo ) )
return TRUE;
return CMDIFrameWndEx::OnCmdMsg( nID, nCode, pExtra, pHandlerInfo );
}
# re: vc++2008 feature package中CPaneDialog的使用方法 回复 更多评论
2010-06-29 16:49 by
改写CMainFrame的OnCmdMsg虚函数就可以解决CParamsDlg中不能捕获到控件消息的问题
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_dlgParams.OnCmdMsg( nID, nCode, pExtra, pHandlerInfo ) )
return TRUE;
return CMDIFrameWndEx::OnCmdMsg( nID, nCode, pExtra, pHandlerInfo );
}
# re: vc++2008 feature package中CPaneDialog的使用方法 回复 更多评论
2010-09-06 13:49 by
OnCmdMsg这个东东很有启发!
可以控制ms按照CMainFrame-->CChildFrame-->CMyView的方向传递msg。
对于CPaneDialog的消息传递,可以重写CChildFrame的OnCmdMsg,是的msg能够路由到视图,这个时候的工具栏按钮等控件的msg就可以路由到视图进行处理了。
# re: vc++2008 feature package中CPaneDialog的使用方法 回复 更多评论
2010-11-07 00:12 by
最后,不知道,这种方法对不对,毕竟新出来的东西,资料基本没有,如果发现有更好的办法,请告诉我!!
我有个很简单的方法,你肯定感兴趣:
void CMyDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialogEx::OnShowWindow(bShow, nStatus);
// TODO: 在此处添加消息处理程序代码
this->BringWindowToTop();
}
就是响应WM_SHOWWINDOW
而后把窗口提到最前面
# re: vc++2008 feature package中CPaneDialog的使用方法 回复 更多评论
2010-11-07 00:36 by
sorry!我的情形同你的也许不一样!
上面的方法也许成功,也许失败!
我的代码情况:(你可以参考下)
CDockablePane内含一个CMFCTabCtrl,CMFCTabCtrl含有个Dialog项,
起初我和你一样,点击Dialog中的按钮,没有任何反应,于是跟踪消息路由,发现压根没有调用!
试验了N种方法(属性页,FormView都试验过)
找到了2个方法:
1.就是上面(此时Dialog的parent window可以是framewnd)
2.将Dialog的parent window设置为CMFCTabCtrl对象(要是开始就如此设置,也许就不会发生这些问题,实在是coding失误)
也许两个方法还是帮助不了你!!
最后enjoy coding