2008/04/07
MFC Dialog Box에서 자신의 Class Name설정
출처 : http://www.debuglab.com/knowledge/classname.html
MFC기반 어플리케이션에서 Dialog Box에 자신의 윈도우 Class Name을 제공하는 방법을 설명하겠습니다. Single instance를 필요로하는 Dialog기반의 어플리케이션을 작성할 때 Dialog가 자신만의 Class Name을 필요로 할때가 있습니다. 그러나 MFC에서는 기본적으로 모든 Dialog가 #32770이라는 Class Name으로 설정되어있습니다.
- ResourceView를 연다.
- Resource Editor에서 Dialog Box를 열고 Dialog Box에서 오른쪽 버튼을 클릭한 다음
Properties를 선택한다. 오른쪽 아래를 보면 Class Name이라는 곳이 disable되어 있을 것이다. 이 옵션을
enable할려면 resource view의 top-level node를 선택하고 오른쪽 버튼을 누르고 Properties를
선택한다. 그런 다음 Enable MFC Features 체크 박스를 해제한다. 다시 Dialog Box의 properties를
보면 Class Name 옵션이 enable되어있을 것이다. - Class Name을 입력하고 .rc 파일을 text형식으로 연다. 해당하는 DIALOG resource로 가서 CLASS 옵션을 추가한다.
IDD_LIMITDLGINSTANCE_DIALOG DIALOGEX 0, 0, 195, 44
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "LimitDlgInstance"
CLASS "MyPrivateClassName" // Add your class name here!
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,138,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,138,23,50,14
PUSHBUTTON "&Test!",IDC_BUTTON1,48,14,49,15
END
- CWinApp에 상속받은 class에서 InitInstance() 부분에 다음 코드를 추가한다.
BOOL CLimitDlgInstanceApp::InitInstance()
{
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
WNDCLASS wc;
// Get the info for this class.
// #32770 is the default class name for dialogs boxes.
::GetClassInfo(AfxGetInstanceHandle(), "#32770", &wc);
// Change the name of the class.
wc.lpszClassName = "MyPrivateClassName";
// Register this class so that MFC can use it.
AfxRegisterClass(&wc);
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// ...
}
- 위 단계에서 ::GetClassInfo()호출 부분에 만약 Dialog resource가 DLL에 위치해 있다면 적절한 HINSTANCE를 사용하여 호출한다.
- 프로젝트를 Build하고 실행한 다음 Spy++로 확인해보면 새로운 Class Name으로 설정된 것을 볼 수 있을 것이다.
출처 : http://www.debuglab.com/knowledge/classname.h
Original Post : http://neodreamer-dev.tistory.com/93
Labels:
ClassName
,
MFC
,
TistoryOldPost
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment