[MFC] 대화상자 ClassName 변경

[MFC] 대화상자 ClassName 변경

이번 글에서는 MFC 대화상자 ClassName을 변경하는 방법을 알아보겠습니다.
Win32프로그래밍에서는 생성할때 ClassName을 설정해줘서 쉬운데, MFC는 손을 여기저기에 대야합니다.

우선 MFC 프로젝트 생성 해주신 뒤, 아래와 같이 리소스뷰에서 .rc를 클릭하면 우측에 RC노드라 하여 속성이 나타납니다.

여기서 MFC Mode를 False로 변경하셔야합니다.

그 다음으로 대화상자 속성에서 Class Name을 원하는 이름으로 변경해줍니다.

그리고 난후 대화상자 클래스의 생성자에 아래와 같이 코딩합니다.

CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_MFCAPPLICATION1_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME );
    
	// todo
	WNDCLASS wc; // Get the info for this class. // #32770 is the default class name for dialogs boxes.
	::GetClassInfo( AfxGetInstanceHandle(), _T( "#32770" ), &wc ); // Change the name of the class.
	wc.lpszClassName = _T( "MyPrivateClassName" ); // Register this class so that MFC can use it.
	AfxRegisterClass( &wc );
}

실행해서 Spy++로 확인해봅니다.

이렇게 ClassName을 지정해서 개발을 하면 다른 프로세스에서 내 프로세스의 핸들을 알아낼 때 쉬워집니다.