¸Þ½ÃÁö ·çÇÁ ÀÛ¼º

½Ã½ºÅÛ¿¡´Â ÀÚµ¿À¸·Î °¢ ½º·¹µå¿¡ ´ë ÇÑ ¸Þ½ÃÁö Å¥¸¦ ¸¸µì´Ï´Ù. ¸¸¾à ½º·¹µå Çϳª¸¦ ¸¸µì´Ï´Ù ¶Ç´Â ´õ ¸¹Àº À©µµ¿ì, ¸Þ½ÃÁö ·çÇÁ¸¦ Á¦°ø ÇØ¾ß ÇÕ´Ï´Ù; ÀÌ ¸Þ½ÃÁö ·çÇÁ´Â ½º·¹µåÀÇ ¸Þ½ÃÁö Å¥¿¡¼­ ¸Þ½ÃÁö¸¦ °Ë»ö ÇÏ °í ÀûÀý ÇÑ Ã¢ ÇÁ·Î½ÃÀú¿¡ Àü´Þ.

½Ã½ºÅÛ ¸Þ½ÃÁö ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ °³º° À©µµ¿ì¸¦ ÁöÈÖ, ¶§¹®¿¡ ½º·¹µå ¸Þ½ÃÁö ·çÇÁ¸¦ ½ÃÀÛ Çϱâ Àü¿¡ Çϳª ÀÌ»óÀÇ Ã¢À» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ Win32 ±â¹Ý ÀÀ¿ë ÇÁ·Î±×·¥ Æ÷ÇÔ ´ÜÀÏ ½º·¹µå âÀ» ¸¸µì´Ï´Ù. ÀϹÝÀûÀÎ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢¿¡ ´ë ÇÑ Ã¢ Ŭ·¡½º¸¦ µî·Ï, °í ÁÖ Ã¢ Ç¥½Ã ¸¸µé°í ¸Þ½ÃÁö ·çÇÁ¸¦ ½ÃÀÛ ? WinMain ÇÔ¼ö¿¡ ¸ðµç.

GetMessage ¿Í DispatchMessage ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ¸Þ½ÃÁö ·çÇÁ¸¦ ¸¸µì´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ »ç¿ëÀÚÀÇ ¹®ÀÚ ÀÔ·ÂÀ» ¹Þ¾Æ¾ß ÇÕ´Ï´Ù, ·çÇÁ¿¡¼­ TranslateMessage ÇÔ¼ö¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù. TranslateMessage ¹®ÀÚ ¸Þ½ÃÁö¸¦ °¡»ó Ű ¸Þ½ÃÁö¸¦ º¯È¯ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â °£´ÜÇÑ Win32 ±â¹Ý ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ WinMain ÇÔ¼ö¿¡ ¸Þ½ÃÁö ·çÇÁ.

HINSTANCE hinst; 
HWND hwndMain; 
 
int ÆÄ½ºÄ® WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {MSG ¸Þ½ÃÁö; 
    WNDCLASS È­Àå½Ç; 
    UNREFERENCED_PARAMETER(lpszCmdLine); 
 
    / / ÁÖ Ã¢¿¡ ´ë ÇÑ Ã¢ Ŭ·¡½º¸¦ µî·Ï ÇÕ´Ï´Ù. 
 
    °æ¿ì (! hPrevInstance) {wc.style = 0; 
        wc.lpfnWndProc = (WNDPROC) WndProc; 
        wc.cbClsExtra = 0; 
        wc.cbWndExtra = 0; 
        wc.hInstance = hInstance; 
        wc.hIcon = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION); 
        wc.hCursor = LoadCursor((HINSTANCE) NULL, IDC_ARROW); 
        wc.hbrBackground = GetStockObject(WHITE_BRUSH); 
        wc.lpszMenuName = "MainMenu"; 
        wc.lpszClassName = "MainWndClass"; 
 
        if (!.RegisterClass(amp;wc)) ¹Ýȯ FALSE; 
    } hinst = hInstance;  / / ÀνºÅϽº ÇÚµéÀ» ÀúÀå / / ¸ÞÀÎ À©µµ¿ì¸¦ ¸¸µì´Ï´Ù. 
 
    hwndMain = CreateWindow ("MainWndClass", "¿¹", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND) NULL (HMENU) NULL, hinst, (LPVOID) NULL); 
 
    / ÁÖ Ã¢À» ¸¸µé ¼ö ¾ø½À´Ï´Ù, Á¾·á / / / ÀÀ¿ë ÇÁ·Î±×·¥. 
 
    °æ¿ì (! hwndMain) ¹Ýȯ FALSE; 
 
    / / âÀ» Ç¥½Ã ÇÏ °í ±× ³»¿ëÀ» ÆäÀÎÆ®. 
 
    ShowWindow (hwndMain, nCmdShow); 
    UpdateWindow(hwndMain); 
 
    / / ¸Þ½ÃÁö ·çÇÁ¸¦ ½ÃÀÛ ÇÕ´Ï´Ù. 
 
    ¹Ý¸é (GetMessage (& msg, (HWND) NULL, 0, 0)) {TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } / / ½Ã½ºÅÛ Á¾·á Äڵ带 ¹Ýȯ ÇÕ´Ï´Ù. 
 
    ¹Ýȯ msg.wParam; 
} 
 

´ÙÀ½ ¿¹Á¦¿¡¼­´Â °¡¼Ó±â¸¦ »ç¿ë ÇÏ ¿© ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã ÇÏ´Â ½º·¹µå¿¡ ´ë ÇÑ ¸Þ½ÃÁö ·çÇÁ¸¦ º¸¿© ÁÝ´Ï´Ù. TranslateAccelerator ¶Ç´Â IsDialogMessage TRUE¸¦ ¹Ýȯ ÇÏ´Â °æ¿ì (¸Þ½ÃÁö 󸮸¦ ³ªÅ¸³»´Â), TranslateMessage ¿Í DispatchMessage ´Â È£Ãâ µÇÁö ¾Ê½À´Ï´Ù. ÀÌ ´ë ÇÑ ÀÌÀ¯´Â TranslateAccelerator ¹× IsDialogMessage ÀÌ ¸ðµç ÇÊ¿äÇÑ ¹ø¿ª ÇÏ °í ¸Þ½ÃÁöÀÇ ¹ß¼ÛÀ» ¼öÇàÇÕ´Ï´Ù.

HWND hwndMain; 
HWND hwndDlgModeless = NULL; 
MSG ¸Þ½ÃÁö; 
HACCEL haccel; 
/ / / / ÃʱâÈ­¸¦ ¼öÇà ÇÏ °í ÁÖ Ã¢À» ¸¸µì´Ï´Ù. 
/ / (GetMessage (amp; msg, (HWND) NULL, 0, 0)) µ¿¾È {°æ¿ì (hwndDlgModeless (HWND) NULL = = | | 
            !IsDialogMessage (hwndDlgModeless, & msg) & &!TranslateAccelerator (hwndMain, haccel, & msg)) {TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 
} 
 

 

Index