티스토리 뷰

Visual Studio 2012


자식 다이얼로그에서 부모 클래스 접근하는법(핸들말고..)


자식 1, 2를 만들어서 서로 핸들 주고받게 하려고 하다 찾은 방법


부모가 자식 1,2의 클래스를 가지고 있으니, 자식1에서 부모클래스 포인터를 활용하여


부모클래스포인터->자식2->핸들 로 접근이 가능


1. 부모 다이얼로그에 자식1, 2 클래스 추가 및 설정


헤더


// ModelessDDlg.h : 헤더 파일
//
//멤버변수 선언
CDialog1 *m_dlg1;
CDialog2 *m_dlg2; 


CPP


// ModelessDDlg.cpp : 구현 파일
//
// CModelessDDlg 메시지 처리기
BOOL CModelessDDlg::OnInitDialog()
{
	...
	//Dialog 1 Initialize
	m_dlg1 = new CDialog1(this);
	m_dlg1->setter(this);
	m_dlg1->Create(IDD_DIALOG1, CWnd::GetDesktopWindow());

	//Dialog 2 Initialize
	m_dlg2 = new CDialog2(this);
	m_dlg2->setter(this);
	m_dlg2->Create(IDD_DIALOG2, CWnd::GetDesktopWindow());
	...
}


2. 자식 다이얼로그 헤더에 부모 클래스, setter 선언


// Dialog1.h
// CDialog1 대화 상자입니다.
class CModelessDDlg;	//전방 선언

class CDialog1 : public CDialogEx
{
	...
	CModelessDDlg* m_pDlg;
	void setter(CModelessDDlg* dlg)
	{
		m_pDlg = dlg;
	}
	...
}


3. 자식1 다이얼로그에서 부모 클래스 활용하여 자식2에 접근


// Dialog1.cpp : 구현 파일입니다.
//
#include "ModelessDDlg.h"   //부모다이얼로그 헤더 추가

...

//자식2 접근 코드
m_pDlg->m_dlg2;

댓글