¸ð´ú¸®½º ´ëÈ­ »óÀÚ ¸¸µé±â

¸¸µé ¸ð´ú¸®½º ´ëÈ­ »óÀÚ CreateDialog ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ½Äº°ÀÚ ¶Ç´Â ´ëÈ­ »óÀÚ ÅÛÇø´ ¸®¼Ò½ºÀÇ À̸§ ¹× ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀúÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ ÇÕ´Ï´Ù. CreateDialog ¼­½Ä ÆÄÀÏÀ» ·Îµå ÇÏ °í ´ëÈ­ »óÀÚ¸¦ ¸¸µé°í ¼±ÅÃÀûÀ¸·Î Ç¥½Ã. ÀÀ¿ë ÇÁ·Î±×·¥Àº °Ë»ö ÇÏ °í ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀú¿¡ »ç¿ëÀÚ ÀÔ·ÂµÈ ¸Þ½ÃÁö¸¦ µð½ºÆÐÄ¡ ÇÏ´Â ÀÛ¾÷À» ´ã´ç.

ÀÀ¿ë ÇÁ·Î±×·¥ ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã ÇÏ´Â ´ÙÀ½ ¿¹Á¦¿¡¼­ ? ¾ÆÁ÷ Ç¥½Ã µÇÁö ¾ÊÀº °æ¿ì-¶§ »ç¿ëÀÚ ÀÀ¿ë ÇÁ·Î±×·¥ ¸Þ´º¿¡¼­ À̵¿ ¸í·ÉÀ» ¼±Åà ÇÕ´Ï´Ù. ´ëÈ­ »óÀÚ¿¡´Â ÆíÁý ÄÁÆ®·Ñ, È®Àζõ ¹× È®ÀÎ ´ÜÃß¿Í Ãë¼Ò ´ÜÃß°¡ Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù. ´ëÈ­ »óÀÚ ÅÛÇø´À» ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ½ÇÇà ÆÄÀÏ¿¡ ¸®¼Ò½º ¹× ¸®¼Ò½º ½Äº°ÀÚ DLG_GOTO¸¦ ÀÖ´Ù. »ç¿ëÀÚ ÆíÁý ÄÁÆ®·Ñ¿¡ ÁÙ ¹øÈ£¸¦ ÀÔ·Â ÇÏ °í ÁÙ ¹øÈ£´Â ÇöÀç ¼± ±âÁØÀ¸·Î ÁöÁ¤ ÇÏ·Á¸é È®ÀζõÀ» È®ÀÎ ÇÕ´Ï´Ù. ÄÁÆ®·Ñ ½Äº°ÀÚ´Â ID_LINE, ID_ABSREL, IDOK, IDCANCEL.

¿¹Á¦ÀÇ Ã¹ ¹ø° ºÎºÐ¿¡ ÀÖ´Â ¹®À» ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ ¸¸µì´Ï´Ù. ÀÌ·¯ÇÑ ¹®Àº ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢¿¡ ´ë ÇÑ Ã¢ ÇÁ·Î½ÃÀú¿¡¼­ ¸¸µé°í ´ëÈ­ »óÀÚ Ã¢ ÇÁ·Î½ÃÀú IDM_GOTO ¸í·É ½Äº°ÀÚ°¡ WM_COMMAND ¸Þ½ÃÁö¸¦ ¼ö½Å ÇÏÁö¸¸ Àü¿ª º¯¼ö hwndGoto ¿¡ ÀÌ¹Ì À¯È¿ÇÑ ÇÚµéÀÌ ¾ø´Â °æ¿ì¿¡. ¿¹Á¦ÀÇ µÎ ¹ø° ºÎºÐÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ ¸Þ½ÃÁö ·çÇÁÀÔ´Ï´Ù. ·çÇÁ »ç¿ëÀÚ°¡ ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¿¡ ´ëÈ­ »óÀÚ Å°º¸µå ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï IsDialogMessage ÇÔ¼ö¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù. ¿¹Á¦ÀÇ ¼¼ ¹ø° ºÎºÐÀº ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀúÀÔ´Ï´Ù. ÇÁ·Î½ÃÀú¿¡¼­ »ç¿ëÀÚ°¡ È®ÀÎ ´ÜÃ߸¦ ¼±Åà ÇÏ´Â °æ¿ì ÆíÁý ÄÁÆ®·Ñ ¹× È®ÀζõÀÇ ³»¿ëÀ» °Ë»ö ÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ Ãë¼Ò ¹öÆ°À» ¼±Åà ÇÏ¸é ´ëÈ­ »óÀÚ¸¦ Æı« ÇÏ´Â ÀýÂ÷.

HWND hwndGoto = NULL;  / / ´ëÈ­ »óÀÚÀÇ Ã¢ ÇÚµé. 
    . 
    . 
 
    WM_COMMAND »ç·Ê: Àüȯ (LOWORD(wParam)) {IDM_GOTO °æ¿ì: if (!IsWindow(hwndGoto)) {hwndGoto = CreateDialog (hinst, MAKEINTRESOURCE(DLG_GOTO), hwnd (DLGPROC) GoToProc); 
                    ShowWindow (hwndGoto, SW_SHOW); 
                } 
                break; 
        } 0 L ¹Ýȯ 
 

À§ÀÇ ¹®¿¡¼­ CreateDialog ¶ó°í hwndGoto °¡ ÇÏ´Â °æ¿ì¿¡ ÇÏÁö ¿Ã¹Ù¸¥ â ÇÚµéÀ» Æ÷ÇÔ ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé ÀÀ¿ë ÇÁ·Î±×·¥ µ¿½Ã¿¡ µÎ °³ÀÇ ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã ÇÏÁö ¾Ê½À´Ï´Ù. °Ë»çÀÇÀÌ ¸Þ¼­µå¸¦ Áö¿ø ÇÏ·Á¸é ´ëÈ­ ÇÁ·Î½ÃÀú ÇØ¾ß ÇÕ´Ï´Ù hwndGoto NULL·Î ¼³Á¤ ´ëÈ­ »óÀÚ¸¦ Æı« ÇÏ´Â °æ¿ì.

ÀÀ¿ë ÇÁ·Î±×·¥ ¸Þ½ÃÁö ·çÇÁÀÇ ´ÙÀ½ ¹®À» ±¸¼ºÇÕ´Ï´Ù:

µ¿¾È (GetMessage (amp; msg, NULL, NULL, NULL)) {°æ¿ì (!IsWindow(hwndGoto) | | !IsDialogMessage (hwndGoto, & msg)) {TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 
} 
 

·çÇÁ ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ Ã¢ ÇÚµéÀÇ À¯È¿¼ºÀ» °Ë»ç ÇÏ °í¸¸ ÇÚµéÀº À¯È¿ÇÑ °æ¿ì IsDialogMessage ÇÔ¼ö¸¦ È£Ãâ ÇÕ´Ï´Ù. IsDialogMessage ´ëÈ­ »óÀÚ¿¡ ¼ÓÇÑ °æ¿ì¿¡ ¸Þ½ÃÁö¸¦ ó¸® ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é FALSE¸¦ ¹Ýȯ ÇÏ °í ·çÇÁ¸¦ ÀûÀý ÇÑ Ã¢ ¸Þ½ÃÁö µð½ºÆÐÄ¡.

´ÙÀ½ ¹®Àº ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀú Á¤ÀÇ:

int iLine;             / / ¼ö½Å ¶óÀÎ ¹øÈ£ BOOL fRelative;        / / È®Àζõ »óÅ°¡ BOOL Äݹé GoToProc (hwndDlg HWND, UINT ¸Þ½ÃÁö, WP&ARAM wParam, LPARAM lParam) {BOOL fError; 
 
    ½ºÀ§Ä¡ (¸Þ½ÃÁö) {WM_INITDIALOG °æ¿ì: CheckDlgButton (hwndDlg, ID_ABSREL, fRelative); 
            TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù. 
 
        WM_COMMAND »ç·Ê: Àüȯ (LOWORD(wParam)) {IDOK °æ¿ì: fRelative (hwndDlg, ID_ABSREL); IsDlgButtonChecked = 
                    iLine = GetDlgItemInt (hwndDlg, ID_LINE, amp; fError, fRelative); 
                    °æ¿ì (fError) {MessageBox (hwndDlg, SZINVALIDNUMBER, SZGOTOERR, MB_OK); 
                        SendDlgItemMessage (hwndDlg, ID_LINE, EM_SETSEL, 0-1 ÆÐ); 
                    } ´Ù¸¥ / ¼öÇà ¼ÒÀ¯ÀÚ Ã¢ÀÇ ¾Ë¸² / / / ¸í·É. 
 
                    TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù. 
 
                IDCANCEL »ç·Ê: DestroyWindow(hwndDlg); 
                    hwndGoto = NULL; 
                    TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù. 
            }} FALSE; ¹Ýȯ 
} 
 

À§ÀÇ ¹®¿¡¼­ ÇÁ·Î½ÃÀú WM_INITDIALOG ¹× WM_COMMAND ¸Þ½ÃÁö¸¦ ó¸®ÇÕ´Ï´Ù. WM_INITDIALOG 󸮸¦ ÇÏ´Â µ¿¾È ÇÁ·Î½ÃÀú CheckDlgButton¸¦ Àü¿ª º¯¼ö fRelative ÀÇ ÇöÀç °ªÀ» Àü´Þ ÇÏ ¿© üũ ¹Ú½º¸¦ ÃʱâÈ­ ÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú¿¡¼­ ´ÙÀ½ ±âº» ÀÔ·ÂµÈ Æ÷Ä¿½º¸¦ ¼³Á¤ ÇÏ·Á¸é ½Ã½ºÅÛÀ» Á÷Á¢ TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.

WM_COMMAND ó¸® ÇÏ´Â µ¿¾È ÇÁ·Î½ÃÀú¿¡¼­ Ãë¼Ò ´ÜÃ߸¦ ¼±Åà ÇÏ´Â °æ¿ì¿¡ ´ëÈ­ »óÀÚ¸¦ ´Ý½À´Ï´Ù-IDCANCEL ½Äº°ÀÚ¸¦ °®´Â ¹öÆ° Áï. ÇÁ·Î½ÃÀú´Â ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ ´ÝÀ¸·Á¸é DestroyWindow ¸¦ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù. ÇÁ·Î½ÃÀú ¶ÇÇÑ ´Ù¸¥ ¹®ÀÌÀÌ º¯¼ö¸¦ ÀÇÁ¸ ÇÏ´Â Á¦´ë·Î ÀÛµ¿ ÇÏ·Á¸é NULL·Î hwndGoto º¯¼ö ¼³Á¤.

È®ÀÎ ´ÜÃ߸¦ ¼±Åà ÇÏ´Â °æ¿ì ÇÁ·Î½ÃÀú È®ÀζõÀÇ ÇöÀç »óŸ¦ °Ë»ö ÇÏ °í fRelative º¯¼ö¿¡ ÇÒ´ç ÇÕ´Ï´Ù. ±×°ÍÀº ´ÙÀ½ º¯¼ö¸¦ »ç¿ë ÇÏ ¿© ÆíÁý ÄÁÆ®·Ñ¿¡¼­ ÁÙ ¹øÈ£¸¦ °Ë»ö ÇÕ´Ï´Ù. GetDlgItemInt ÆíÁý ÄÁÆ®·ÑÀÇ¿¡¼­ ÅؽºÆ®¸¦ Á¤¼ö·Î º¯È¯ÇÕ´Ï´Ù. FRelative °ª ÇÔ¼ö ¼ýÀÚ ºÎÈ£ ÀÖ´Â ¶Ç´Â ºÎÈ£ ¾ø´Â °ªÀ¸·Î Çؼ®ÇÒÁö °áÁ¤ ÇÕ´Ï´Ù. ÅؽºÆ® ÆíÁý ÄÁÆ®·Ñ »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì GetDlgItemInt ¸¦ 0ÀÌ ¾Æ´Ñ fError º¯¼öÀÇ °ªÀ» ¼³Á¤ ÇÕ´Ï´Ù. ¿À·ù ¸Þ½ÃÁö¸¦ Ç¥½Ã Çϰųª ¸í·ÉÀ» ¼öÇà ¿©ºÎ¸¦ °áÁ¤ ÇÏ·Á¸éÀÌ °ªÀ» °Ë»ç ÇÏ´Â ÀýÂ÷. ¿À·ù À̺¥Æ®¿¡ ´ëÈ­ »óÀÚ ÇÁ·Î½ÃÀú ÅؽºÆ®¸¦ ¼±Åà ÇÏ´Â ÄÁÆ®·Ñ¿¡ »ç¿ëÀÚ°¡ ½±°Ô ¹Ù²Ü ¼ö ÀÖµµ·Ï ±×°ÍÀ» ¿¬Ãâ ÇÏ´Â ÆíÁý ÄÁÆ®·Ñ¿¡ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. °æ¿ì GetDlgItemInt ¿À·ù¸¦ ¹Ýȯ ÇÏÁö ¾ÊÀ¸¸é ÇÁ·Î½ÃÀú ÀÚü ¿äûÇÑ ¸í·ÉÀ» ¼öÇà Çϰųª ¸í·ÉÀ» ¼öÇà Çϵµ·Ï Áö½Ã ÇÏ´Â ¼ÒÀ¯ÀÚ Ã¢¿¡ ¸Þ½ÃÁö¸¦ º¸³¾.

 

Index