MFC将某一Cwnd类获取的消息传递给别的窗口响应

比如再一个Cmainframe上创建一个视图CGameControlPanelView,另外有一个对话框CCtrlDlg,对话框上有摁钮,用来点击响应处理函数。这里的问题就是,把摁钮的消息处理函数写在对话框类里可以正常响应,但是把消息处理函数写在CGameControlPanelView类里面,没法响应,原因是对话框截获了这个点击消息,没传到视图类CGameControlPanelView。

解决办法:

在对话框CCtrlDlg里重载函数

virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);

实现如下:

BOOL CCtrlDlg::OnCmdMsg( UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo )
{
	//MessageBox("here");
	//GetParent()->OnCmdMsg(nID,nCode,pExtra,pHandlerInfo);
	CMainFrame *pmwnd = (CMainFrame*)AfxGetMainWnd();
	CbubbleView *pview = (CbubbleView*)(pmwnd->m_wndSplitter.GetPane(0,0));

	//pview->SetFocus();
	if (pview->OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))
		return TRUE;

	return TRUE;
}


 

展开阅读全文

没有更多推荐了,返回首页