½Ã½ºÅÛ¿¡´Â ÀÚµ¿À¸·Î °¢ ½º·¹µå¿¡ ´ë ÇÑ ¸Þ½ÃÁö Å¥¸¦ ¸¸µì´Ï´Ù. ¸¸¾à ½º·¹µå Çϳª¸¦ ¸¸µì´Ï´Ù ¶Ç´Â ´õ ¸¹Àº À©µµ¿ì, ¸Þ½ÃÁö ·çÇÁ¸¦ Á¦°ø ÇØ¾ß ÇÕ´Ï´Ù; ÀÌ ¸Þ½ÃÁö ·çÇÁ´Â ½º·¹µåÀÇ ¸Þ½ÃÁö Å¥¿¡¼ ¸Þ½ÃÁö¸¦ °Ë»ö ÇÏ °í ÀûÀý ÇÑ Ã¢ ÇÁ·Î½ÃÀú¿¡ Àü´Þ.
½Ã½ºÅÛ ¸Þ½ÃÁö ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ °³º° À©µµ¿ì¸¦ ÁöÈÖ, ¶§¹®¿¡ ½º·¹µå ¸Þ½ÃÁö ·çÇÁ¸¦ ½ÃÀÛ Çϱâ Àü¿¡ Çϳª ÀÌ»óÀÇ Ã¢À» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ 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);
}
}