우선 메인MDI프레임이 CMainFrame 이라고 하면요
CFrameWnd* frame = GetActiveFrame();
// 차일드 프레임이 없을경우엔 frame은 GetActiveFrame은 자신의 주소를 반환합니다.
// 만약 frame이 this가 다르다면 frame 은 자식윈도우 중의 엑티브된 프레임의 주소겠죠.
if( frame == this ) return;
CWnd* wnd = frame->GetWindow(GW_HWNDFIRST);
// wnd는 여러개의 ChildFrame 중의 가장 첫번째의 포인터입니다.
while( wnd )
{
wnd = wnd->GetWindow( GW_HWNDNEXT );
// 모든 ChildWindow들의 포인터를 받을 수 있습니다.
}
//그럼 위에서 wnd를 가지고 차일드 프레임의 포인터로 변환을 시도합니다.
//DYNAMIC_DOWNCAST 또는 STATIC_DOWNCAST를 이용합니다.
CChildFrame* child = DYNAMIC_DOWNCAST(CChildFrame, wnd);
// wnd가 CChildFrame 클래스이어야만 child로 제대로 변환이 됩니다.
child->do(); // 그냥 써주시면 됩니다.
댓글 없음:
댓글 쓰기