ÇÏÀ§ âÀÇ ÀνºÅϽº, SetWindowLong ÇÔ¼ö¸¦ È£Ãâ ÇÏ °í GWL_WNDPROC Ç÷¡±×¿Í ÇÏÀ§ ÇÁ·Î½ÃÀú¿¡ ´ë ÇÑ Æ÷ÀÎÅÍ ÇÏÀ§ â ÇÚµéÀ» ÁöÁ¤ ÇÕ´Ï´Ù. SetWindowLong ¿ø·¡ â ÇÁ·Î½ÃÀú;¿¡ Æ÷ÀÎÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ë ÇÏ ¿© ¿ø·¡ ÇÁ·Î½ÃÀú¿¡ ¸Þ½ÃÁö¸¦ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÀ§ â ÇÁ·Î½ÃÀú CallWindowProc ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ¿ø·¡ â ÇÁ·Î½ÃÀú¸¦ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù.
´ÙÀ½ ¿¹Á¦¿¡¼´Â ¾î¶»°Ô ¼ºê Ŭ·¡½º ÆíÁýÀÇ ÀνºÅϽº Á¦¾î ´ëÈ »óÀÚ¿¡¼. ÇÏÀ§ â ÇÁ·Î½ÃÀú ÆíÁý ÄÁÆ®·Ñ¿¡¼ ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ Æ÷Ä¿½º°¡ ¶§¸¶´Ù enter¿Í tab ۸¦ Æ÷ÇÔ ÇÏ ¿© ¸ðµç Űº¸µå ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖµµ·Ï.
WNDPROC wpOrigEditProc;
LRESULT APIENTRY EditBoxProc (
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {HWND hwndEdit;
switch(uMsg) {WM_INITDIALOG °æ¿ì: / / ÆíÁý ÄÁÆ®·Ñ¿¡ ´ë ÇÑ ÇÚµéÀ» °Ë»ö ÇÕ´Ï´Ù.
hwndEdit = GetDlgItem (hwndDlg, ID_EDIT);
/ / ¼ºê Ŭ·¡½º ÆíÁý Á¦¾î.
wpOrigEditProc = (WNDPROC) SetWindowLong (hwndEdit, GWL_WNDPROC, EditSubclassProc (LONG));
/ / / / ÃʱâÈ ÀýÂ÷¸¦ °è¼Ó ÇÕ´Ï´Ù.
/ / TRUE¸¦ ¹Ýȯ ÇÕ´Ï´Ù.
WM_DESTROY »ç·Ê: / / ¼ºê Ŭ·¡½º ÆíÁý ÄÁÆ®·Ñ¿¡¼ Á¦°Å ÇÕ´Ï´Ù.
SetWindowLong (hwndEdit, GWL_WNDPROC, (LONG) wpOrigEditProc);
/ / / / Á¤¸® ÀýÂ÷¸¦ °è¼Ó ÇÕ´Ï´Ù.
/ / ÈÞ½Ä;
} FALSE; ¹Ýȯ
UNREFERENCED_PARAMETER(lParam);
} / / ÇÏÀ§ ÇÁ·Î½ÃÀú LRESULT APIENTRY EditSubclassProc (
HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {°æ¿ì (uMsg = WM_GETDLGCODE) DLGC_WANTALLKEYS; ¹Ýȯ
¹Ýȯ CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, lParam);
}