2010년 4월 27일 화요일

메인프레임에서 활성화된 차일드 프래임 얻어오기

우선 메인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(); // 그냥 써주시면 됩니다.

댓글 없음:

댓글 쓰기