MFC Dialog Box¿¡¼­ ÀÚ½ÅÀÇ Class Name¼³Á¤


1.¿ä¾à

MFC±â¹Ý ¾îÇø®ÄÉÀ̼ǿ¡¼­ Dialog Box¿¡ ÀÚ½ÅÀÇ À©µµ¿ì Class NameÀ» Á¦°øÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϰڽÀ´Ï´Ù. Single instance¸¦ ÇÊ¿ä·ÎÇÏ´Â Dialog±â¹ÝÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¶§ Dialog°¡ ÀڽŸ¸ÀÇ Class NameÀ» ÇÊ¿ä·Î ÇÒ¶§°¡ ÀÖ½À´Ï´Ù. ±×·¯³ª MFC¿¡¼­´Â ±âº»ÀûÀ¸·Î ¸ðµç Dialog°¡ #32770À̶ó´Â Class NameÀ¸·Î ¼³Á¤µÇ¾îÀÖ½À´Ï´Ù.


2.º»¹®


  1. 1. ResourceView¸¦ ¿¬´Ù.

  2. 2. 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µÇ¾îÀÖÀ» °ÍÀÌ´Ù.

  3. 3. 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 

  4. 4. 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);  
    
        ///////////////////////////////////////////////////////////////////////// 
    
        ///////////////////////////////////////////////////////////////////////// 
    
    
    
    // ...
    
    } 
    
    

  5. 5. À§ ´Ü°è¿¡¼­ ::GetClassInfo()È£Ã⠺κп¡ ¸¸¾à Dialog resource°¡ DLL¿¡ À§Ä¡ÇØ ÀÖ´Ù¸é ÀûÀýÇÑ HINSTANCE¸¦ »ç¿ëÇÏ¿© È£ÃâÇÑ´Ù.

  6. 6. ÇÁ·ÎÁ§Æ®¸¦ BuildÇÏ°í ½ÇÇàÇÑ ´ÙÀ½ Spy++·Î È®ÀÎÇØº¸¸é »õ·Î¿î Class NameÀ¸·Î ¼³Á¤µÈ °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

3.¿¹Á¦

- 2001.08.06 Smile Seo -