´ëÈ­ »óÀÚ ÃʱâÈ­

WM_INITDIALOG ¸Þ½ÃÁö¸¦ ó¸® ÇÏ´Â µ¿¾È ´ëÈ­ »óÀÚ¿Í ³»¿ë¹°À» ÃʱâÈ­ ÇÕ´Ï´Ù. °¡Àå ÀϹÝÀûÀÎ ÀÛ¾÷ÀÌ ÇöÀç ´ëÈ­ »óÀÚ ¼³Á¤À» ¹Ý¿µ Çϱâ À§ÇØ ÄÁÆ®·ÑÀ» ÃʱâÈ­ ÇÏ´Â °ÍÀÔ´Ï´Ù. ¶Ç ´Ù¸¥ ÀϹÝÀûÀÎ ÀÛ¾÷ ¼¾ÅÍ ¶Ç´Â ¼ÒÀ¯ÀÚ Ã¢ ³» È­¸é¿¡ ´ëÈ­ »óÀÚÀÔ´Ï´Ù. ÀϺΠ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ À¯¿ëÇÑ ÀÛ¾÷ ±âº» ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¹ÞÀ» ÇÏ´Â ´ë½Å ÇØ´çµÈ ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÏ´Â °Í.

´ÙÀ½ ¿¹Á¦¿¡¼­´Â ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀú ´ëÈ­ »óÀÚ °¡¿îµ¥ °í WM_INITDIALOG ¸Þ½ÃÁö¸¦ ó¸® ÇÏ´Â µ¿¾È ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÕ´Ï´Ù. ´ëÈ­ »óÀÚ °¡¿îµ¥¿¡ ÇÁ·Î½ÃÀú ¼ÒÀ¯ÀÚ Ã¢¿¡ ´ë ÇÑ ´ëÈ­ »óÀÚ Ã¢ »ç°¢ÇüÀ» °Ë»ö ÇÏ °í ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ »õ À§Ä¡¸¦ °è»ê ÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú¿¡¼­ ±âº» ÀÔ·ÂµÈ Æ÷Ä¿½ºÀÇ ½Äº°ÀÚ¸¦ È®ÀÎ ÇÏ·Á¸é wParam ¸Å°³ º¯¼ö¸¦ °Ë»ç ÇÏ´Â ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÏ·Á¸é:

HWND hwndOwner; 
RECT rc, rcDlg, rcOwner; 
 
    WM_INITDIALOG »ç·Ê: / / ¼ÒÀ¯ÀÚ Ã¢ ¹× ´ëÈ­ »óÀÚ »ç°¢Çü. 
 
        ¸¸¾à ((hwndOwner GetParent(hwndDlg)) = = NULL) {
            hwndOwner = GetDesktopWindow(); 
        }

GetWindowRect hwndOwner, ¾ÚÇÁ (rcOwner); 
        GetWindowRect (hwndDlg, ¹× rcDlg); 
        CopyRect (rc & rcOwner); 
 
         / / ¼ÒÀ¯ÀÚ¸¦ ¿ÀÇÁ¼Â ÇÏ °í ´ëÈ­ »óÀÚÀÇ »ç°¢Çü ÀÖµµ·Ï / ¿À¸¥ÂÊ ¹× ¾Æ·¡ÂÊ °ªÀ» ³ªÅ¸³À´Ï´Ù ³Êºñ / ¹× / / ³ôÀÌ, ±×¸®°í À̹ø ÁÖ ¿ÀÇÁ¼Â ´ÙÀ½ Ãë¼Ò¸¦ ´Ù½Ã ¼ÒÀ¯ÀÚ / / ´ëÈ­ »óÀÚ¿¡ ÀÇÇØ Â÷Áö ÇÏ´Â °ø°£. 
 
        OffsetRect (& rcDlg,-rcDlg.left,-rcDlg.top); 
        OffsetRect (rc, ¹×-rc.left,-rc.top); 
        OffsetRect (rc, ¹×-rcDlg.right,-rcDlg.bottom); 
 
         / / »õ À§Ä¡´Â ³ª¸ÓÁö Àý¹ÝÀÇ ÇÕ / / °ø°£ ¹× ¼ÒÀ¯ÀÚÀÇ ¿ø·¡ À§Ä¡. 
 
        SetWindowPos (hwndDlg, HWND_TOP, rcOwner.left + (rc.right/2), rcOwner.top + (rc.bottom / 2), 0, 0, / / Å©±â Àμö¸¦ ¹«½Ã SWP_NOSIZE); 
 
        °æ¿ì (wParam GetDlgCtrlID((HWND))! = ID_ITEMNAME) {SetFocus (GetDlgItem (hwndDlg, ID_ITEMNAME)); 
            FALSE; ¹Ýȯ 
        } TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù. 
 

À§ÀÇ ¹®¿¡¼­ ÇÁ·Î½ÃÀú ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ ¼ÒÀ¯ÀÚ Ã¢ ÇÚµéÀ» °Ë»ö ÇÏ·Á¸é GetParent ÇÔ¼ö¸¦ »ç¿ë ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ Ã¢ ÇÚµé ¹× ÀÚ½Ä Ã¢¿¡ ´ë ÇÑ ºÎ¸ð â ÇÚµé ¼ÒÀ¯ÀÚ¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ ¾øÀ½ ¼ÒÀ¯ÀÚ°¡ ´ëÈ­ »óÀÚ¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù, ¶§¹®¿¡ ÇÁ·Î½ÃÀú¿¡¼­ ¹Ýȯ µÈ ÇÚµéÀ» È®ÀÎ ÇÏ °í ÇÊ¿äÇÑ °æ¿ì¿¡ µ¥½ºÅ©Åé â ÇÚµéÀ» °¡Á®¿Ã GetDesktopWindow ÇÔ¼ö¸¦ »ç¿ë ÇÏ. »õ À§Ä¡¸¦ °è»ê ÈÄ ÇÁ·Î½ÃÀú SetWindowPos ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© À̵¿ ´ëÈ­ »óÀÚÀÇ ¼ÒÀ¯ÀÚ Ã¢ ¸Ç À§¿¡ ³²¾Æ ÀÖµµ·Ï HWND_TOP °ªÀ» ÁöÁ¤ ÇÏ´Â ´ëÈ­ »óÀÚ.

ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ Çϱâ Àü¿¡ ÀýÂ÷¸¦ ±âº» ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ÄÁÆ®·Ñ ½Äº°ÀÚ¸¦ È®ÀÎ ÇÕ´Ï´Ù. ½Ã½ºÅÛÀÌ wParam ¸Å°³ º¯¼ö¿¡¼­ ±âº» ÀÔ·ÂµÈ Æ÷Ä¿½ºÀÇ Ã¢ ÇÚµéÀ» Àü´ÞÇÕ´Ï´Ù. GetDlgCtrlID ÇÔ¼ö´Â â Çڵ鿡 ÀÇÇØ ½Äº° µÈ ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ¸¦ ¹Ýȯ ÇÕ´Ï´Ù. ½Äº°ÀÚ¿¡´Â ¿Ã¹Ù¸¥ ½Äº°ÀÚ¿Í ÀÏÄ¡ ÇÏÁö ¾ÊÀ¸¸é, ÇÁ·Î½ÃÀú´Â SetFocus ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÕ´Ï´Ù. ¿øÇÏ´Â ÄÁÆ®·ÑÀÇ Ã¢ ÇÚµéÀ» °Ë»ö ÇÏ´Â µ¥ ÇÊ¿äÇÑ GetDlgItem ÇÔ¼ö.

 

Index