본문 바로가기

Programming Tips/MFC

임의의 클래스에서 메인 다이얼로그의 포인터를 얻어오는 방법


다이얼로그 기반의 프로젝트로 작업을 하다보면 사용자가 임의로 여러가지 클래스들을 만들어 사용하는 경우가 있다. 제너릭으로 만들든 CView, CFormView등의 MFC에 정의되있는 클래스의 상속을 받아서 만들든 다양한 형태의 클래스가 만들어 질 것이다. 보통 사용자가 만든 클래스들은 메인 다이얼로그 클래스에 헤더파일을 인클루드하고 인스턴스로 만들어져 사용이 될텐데 경우에 따라 사용자가 만든 클래스에서 메인 다이얼로그의 변수나 함수들을 사용해야 할 경우가 생기게 된다. 이런 경우 메인 다이얼로그의 포인터를 얻는 방법에는 다음의 두 가지가 있다.

메인 다이얼로그 클래스 : CMainDlg
임의로 생성된 클래스    : CChild

라고 했을 때,

1. CMainDlg.h를 인클루드하고 다음과 같이 멤버변수로 등록하여 사용

CMainDlg* pMainDlg;

2. 아래와 같이 AfxGetMainWnd()나 GetParent()를 이용하여 포인터를 가져와서 사용.

CMainDlg* pMainDlg = (CMainDlg*)::AfxGetMainWnd();
또는
CMainDlg* pMainDlg = (CMainDlg*)GetParent();

위의 방법들을 사용하면 메인 다이얼로그 클래스의 포인터를 얻을 수 있다.