OSDN Git Service

enable command notify on x64
[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         case WM_KEYDOWN:\r
15         case WM_SYSKEYDOWN:\r
16         case WM_KEYUP:\r
17         case WM_SYSKEYUP:\r
18                 SendMessage(GetParent(i_hwnd), WM_APP_notifyVKey, i_wParam, i_lParam);\r
19                 return 0;\r
20         case WM_CHAR:\r
21         case WM_DEADCHAR:\r
22                 return 0;\r
23         case WM_LBUTTONDOWN: {\r
24                 SetFocus(i_hwnd);\r
25                 return 0;\r
26         }\r
27         case WM_SETFOCUS: {\r
28                 RECT rc;\r
29                 GetClientRect(i_hwnd, &rc);\r
30                 CreateCaret(i_hwnd, reinterpret_cast<HBITMAP>(NULL), 2,\r
31                                         rcHeight(&rc) / 2);\r
32                 ShowCaret(i_hwnd);\r
33                 SetCaretPos(rcWidth(&rc) / 2, rcHeight(&rc) / 4);\r
34                 SendMessage(GetParent(i_hwnd), WM_APP_notifyFocus,\r
35                                         TRUE, (LPARAM)i_hwnd);\r
36                 return 0;\r
37         }\r
38         case WM_KILLFOCUS: {\r
39                 HideCaret(i_hwnd);\r
40                 DestroyCaret();\r
41                 SendMessage(GetParent(i_hwnd), WM_APP_notifyFocus,\r
42                                         FALSE, (LPARAM)i_hwnd);\r
43                 return 0;\r
44         }\r
45         case WM_GETDLGCODE:\r
46                 return DLGC_WANTALLKEYS;\r
47         }\r
48         return DefWindowProc(i_hwnd, i_message, i_wParam, i_lParam);\r
49 }\r
50 \r
51 \r
52 ATOM Register_focus()\r
53 {\r
54         WNDCLASS wc;\r
55         wc.style         = CS_HREDRAW | CS_VREDRAW;\r
56         wc.lpfnWndProc   = WndProc;\r
57         wc.cbClsExtra    = 0;\r
58         wc.cbWndExtra    = 0;\r
59         wc.hInstance     = g_hInst;\r
60         wc.hIcon         = NULL;\r
61         wc.hCursor       = LoadCursor(NULL, IDC_IBEAM);\r
62         wc.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOW + 1);\r
63         wc.lpszMenuName  = NULL;\r
64         wc.lpszClassName = _T("mayuFocus");\r
65         return RegisterClass(&wc);\r
66 }\r