통신이라 하기 애매하려나..


자식 다이얼로그에서 부모 다이얼로그의 함수를 호출하고

그에 대한 응답을 부모 다이얼로그에서 자식 다이얼로그의 컨트롤로 던져주는 건데..


다이얼로그 클래스 컨스트럭터를 보다 보니 신기한 걸 발견

CRegister(CWnd* pParent = NULL);   // 표준 생성자입니다.

CRegister::CRegister(CWnd* pParent /*=NULL*/) : CDialogEx(CRegister::IDD, pParent) { }


오호.. 이걸 이용해서 잘 구워삶으면 되지 않을까 해서 찾은게

HWND WINAPI GetParent(

  _In_ HWND hWnd

); 

[링크 : https://msdn.microsoft.com/ko-kr/library/0x2wyab0.aspx]

[링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms633510(v=vs.85).aspx]


일단은.. modal-less로 구성할건데

컨스트럭터 호출때 (this)를 넣으면 자동으로 CDialgEx를 상속받아 pParent에 넣어 주지 않을까! 했는데

정작 실험해보니.. (this)를 해서 컨스트럭터를 통해 넣어 주던

그냥 () 으로 생성을 하던 똑같이 되긴 한다... 이게 머야 -ㅁ-?



아무튼,

Child는 이런식으로 부모 함수를 부르면 되고

#include "parent.h"

((CparentDlg*)GetParent())->parent_fuction();


parent야 어짜피 생성하러면 이미 include 해야 하니

#include "child.h"

reg = new Cchild(this);

if(reg)

{

reg->Create(IDD_CHLREG);

reg->ShowWindow(SW_HIDE);

}

modal-less로 생성하고 필요할때 SW_SHOW로 보여주면 끝

그리고 reg->로 필요한 함수를 미리 만들어서 interface로서 사용하면 끝!

(물론 child 컨트롤 직접 접근해도 되지만 귀찮은데 어느게 더 귀찮을까 -ㅁ-?)


[링크 : http://www.howspace.kr/gbs/bbs/tb.php/gr2_10_data/176]

[링크 : http://blog.daum.net/pince0/8457191]

2017/08/01 - [Programming/C / Win32 / MFC] - MFC 모달리스(modaless) 다이얼로그


신고
Posted by 구차니

댓글을 달아 주세요