OSDN Git Service

change EOL style to CRLF to adjust to default setting of Visual Studio
[yamy/yamy.git] / focus.cpp
1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
2 // focus.cpp\r
3 \r
4 \r
5 #include "focus.h"\r
6 #include "windowstool.h"\r
7 \r
8 \r
9 ///\r
10 static LRESULT CALLBACK WndProc(\r
11   HWND i_hwnd, UINT i_message, WPARAM i_wParam, LPARAM i_lParam)\r
12 {\r
13   switch (i_message)\r
14   {\r
15     case WM_KEYDOWN:\r
16     case WM_SYSKEYDOWN:\r
17     case WM_KEYUP:\r
18     case WM_SYSKEYUP:\r
19       SendMessage(GetParent(i_hwnd), WM_APP_notifyVKey, i_wParam, i_lParam);\r
20       return 0;\r
21     case WM_CHAR:\r
22     case WM_DEADCHAR:\r
23       return 0;\r
24     case WM_LBUTTONDOWN:\r
25     {\r
26       SetFocus(i_hwnd);\r
27       return 0;\r
28     }\r
29     case WM_SETFOCUS:\r
30     {\r
31       RECT rc;\r
32       GetClientRect(i_hwnd, &rc);\r
33       CreateCaret(i_hwnd, reinterpret_cast<HBITMAP>(NULL), 2,\r
34                   rcHeight(&rc) / 2);\r
35       ShowCaret(i_hwnd);\r
36       SetCaretPos(rcWidth(&rc) / 2, rcHeight(&rc) / 4);\r
37       SendMessage(GetParent(i_hwnd), WM_APP_notifyFocus,\r
38                   TRUE, (LPARAM)i_hwnd);\r
39       return 0;\r
40     }\r
41     case WM_KILLFOCUS:\r
42     {\r
43       HideCaret(i_hwnd);\r
44       DestroyCaret();\r
45       SendMessage(GetParent(i_hwnd), WM_APP_notifyFocus,\r
46                   FALSE, (LPARAM)i_hwnd);\r
47       return 0;\r
48     }\r
49     case WM_GETDLGCODE:\r
50       return DLGC_WANTALLKEYS;\r
51   }\r
52   return DefWindowProc(i_hwnd, i_message, i_wParam, i_lParam);\r
53 }\r
54 \r
55 \r
56 ATOM Register_focus()\r
57 {\r
58   WNDCLASS wc;\r
59   wc.style         = CS_HREDRAW | CS_VREDRAW;\r
60   wc.lpfnWndProc   = WndProc;\r
61   wc.cbClsExtra    = 0;\r
62   wc.cbWndExtra    = 0;\r
63   wc.hInstance     = g_hInst;\r
64   wc.hIcon         = NULL;\r
65   wc.hCursor       = LoadCursor(NULL, IDC_IBEAM);\r
66   wc.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOW + 1);\r
67   wc.lpszMenuName  = NULL;\r
68   wc.lpszClassName = _T("mayuFocus");\r
69   return RegisterClass(&wc);\r
70 }\r