0
CMyDialog
에 CtrlTree
과 같은 권한이 있습니다. CMyDialog
클래스의 ON_WM_LBUTTONDOWN()
과 같은 메시지를 CTreeCtrl
에서 처리하고 싶습니다.상위 CDialog에서 제어 메시지를 처리하는 방법은 무엇입니까?
MFC에서 메시지 스트림을 부모로 리디렉션 할 수있는 방법이 있습니까?
CMyDialog
에 CtrlTree
과 같은 권한이 있습니다. CMyDialog
클래스의 ON_WM_LBUTTONDOWN()
과 같은 메시지를 CTreeCtrl
에서 처리하고 싶습니다.상위 CDialog에서 제어 메시지를 처리하는 방법은 무엇입니까?
MFC에서 메시지 스트림을 부모로 리디렉션 할 수있는 방법이 있습니까?
메시지를 리디렉션하는 가장 간단한 방법은 컨트롤의 ON_WM_LBUTTONDOWN 처리기에서 부모 클래스로 사용자 지정 (WM_USER + xxx) 메시지를 보내는 것입니다.
부모의 WM_LBUTTONDOWN 처리기 코드를 별도의 메서드에 배치하고이 메서드를 직접 호출하십시오. 기존의 코드가 HandleTreeCtrlLBDown에 앉아 있다는 그 (의사 코드) 같은
뭔가, 추정()
CMyTreeCtrl::OnLButtonDown(..)
{
pParent ->SendMessage(WM_TREECTRLLBDOWN, 0, (LPARAM)this);
}
CControlParentDialog::OnTreeCtrlLBDown(wParam, lParam)
{
HandleTreeCtrlLBDown();
}
가 왜 그렇게 하시겠습니까? MFC 아키텍처의 핵심은 캡슐화, 코드 재사용 및 책임 분리를 촉진하는 이미지를 처음 생성 한 컨트롤에서 부모 컨트롤까지의 메시지를 반영한다는 점입니다. –
고용주가 저에게 그 일을 제공합니다. CDialog의 처리기가 이미 작성되었으므로 메시지 스트림을 리디렉션하고 싶습니다. 나는이 솔루션이 캡슐화에 동의하지 않는다는 것을 알고 있습니다. 그러나 메시지 스트림을 리디렉션하면 프로젝트가 거의 준비됩니다. 이 주제에 대한 아이디어가 있습니까? – Diego666
http://stackoverflow.com/questions/1506145/how-to-handle-cedit-mouse-click-in-parent-form – Flot2011