¸¸µé ¸ð´ú¸®½º ´ëÈ »óÀÚ 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 ¿À·ù¸¦ ¹Ýȯ ÇÏÁö ¾ÊÀ¸¸é ÇÁ·Î½ÃÀú ÀÚü ¿äûÇÑ ¸í·ÉÀ» ¼öÇà Çϰųª ¸í·ÉÀ» ¼öÇà Çϵµ·Ï Áö½Ã ÇÏ´Â ¼ÒÀ¯ÀÚ Ã¢¿¡ ¸Þ½ÃÁö¸¦ º¸³¾.