Caps Lock Ű´Â ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ°¡ Á÷Á¢ Åä±ÛÇÏ¸ç »ç¿ëÇϴ ŰÀÌÁö¸¸ Äڵ忡¼ ÀǵµÀûÀ¸·Î Á¶»çÇϰųª Á÷Á¢ ¹Ù²Ü ¼öµµ ÀÖ´Ù.
¹Ýµå½Ã ´ë¹®ÀÚ·Î ÀÔ·ÂÇØ¾ß ÇÏ´Â Á¦Ç° Äڵ峪 ´ë¹®ÀÚ¸¦ ±ÝÁöÇØ¾ß ÇÏ´Â °æ¿ì µîÀÌ´Ù.
Á¶»çÇÒ ¶§´Â GetKeyState(VK_CAPITAL)À» È£ÃâÇÑ ÈÄ ÃÖÇÏÀ§ ºñÆ®°¡ 1ÀÎÁö¸¸ º¸¸é µÈ´Ù. ÃÖÇÏÀ§ ºñÆ®´Â Åä±ÛŰÀÇ ÇöÀç »óŸ¦ Á¶»çÇϴµ¥ ºñÇØ ÃÖ»óÀ§ ºñÆ®´Â Áö±Ý ´·¯Á® ÀÖ´ÂÁö Á¶»çÇÑ´Ù.
ÀÌ µÑÀÇ Â÷À̸¦ Àß ±¸ºÐÇØ¾ß Çϴµ¥ ÃÖ»óÀ§ ºñÆ®´Â Áö±Ý ´·¯Á® ÀÖ´ÂÁö º¸´Â °ÍÀ̰í ÃÖÇÏÀ§ ºñÆ®´Â Àü¿¡ ´·¯ ³õ¾Æ ´ë¹®ÀÚ °íÁ¤ »óÅÂÀÎÁö Á¶»çÇÏ´Â °ÍÀÌ´Ù. Áï, Áö±Ý ´©¸£°í ÀÖ´À³Ä, Àü¿¡ ´·¯ ³õ¾Ò´À³ÄÀÇ Â÷ÀÌÀÌ´Ù.
º¯°æÇÒ ¶§´Â keybd_event(VK_CAPITAL, 0, 0, 0) È£Ãâ·Î ´©¸¥ ÈÄ keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0) È£Ãâ·Î ´Ù½Ã ¶¾´Ù. »ç¿ËÀÚ ´ë½Å ۸¦ ´·¯ÁÖ´Â °ÍÀÌ´Ù.
¾îÂî º¸¸é ¿ø·ÐÀûÀ¸·Î °£´ÜÇÑ ¹æ¹ýÀÌ´Ù. ¼Ò½º ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
TCHAR str[128];
switch (iMessage) {
case WM_CREATE:
hWndMain = hWnd;
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// ÇöÀç »óÅ Á¶»ç.
if ((GetKeyState(VK_CAPITAL) && 1) == 0) {
lstrcpy(str, TEXT("Caps Lock Off"));
} else {
lstrcpy(str, TEXT("Caps Lock On"));
}
TextOut(hdc, 10, 10, str, lstrlen(str));
EndPaint(hWnd, &ps);
return 0;
case WM_LBUTTONDOWN:
// ÇöÀç »óÅÂ Åä±Û
keybd_event(VK_CAPITAL, 0, 0, 0);
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
InvalidateRect(hWnd, NULL, TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
Win32 ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ¼Ò½º ºÙ¿© ³ÖÀº ÈÄ ½ÇÇàÇÑ´Ù.
ȸ鿡 Caps LockŰÀÇ ÇöÀç »óŸ¦ º¸¿©ÁÖ°í ¸¶¿ì½º ¹öưÀ» Ŭ¸¯Çϸé Åä±ÛÇÑ´Ù.
ƯÁ¤ »óÅ·Π°Á¦ Á¶Á¤ÇÏ·Á¸é »óŸ¦ ¸ÕÀú Á¶»çÇØ º¸°í ¿øÇÏ´Â »óŰ¡ ¾Æ´Ò °æ¿ì µÚÁýÀ¸¸é µÈ´Ù.
|
|