# 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