1
1
/*
2
2
注意!!!Caution!!!
3
- 这个输入法一开始的状态是英文!需要使用 Ctrl + Space 切换一下状态才可以正常输入中文!!!
3
+ 这个输入法一开始的状态是英文!需要使用 Ctrl + Space
4
+ 切换一下状态才可以正常输入中文!!!
4
5
*/
5
6
#ifndef UNICODE
6
7
#define UNICODE
17
18
18
19
#include " ./InitConsole.h"
19
20
#include " ./flypytblsqlite.h"
20
- #include " ./hook/ime_hook.h"
21
- #include " ./hook/key_handle_func_lib.h"
22
- #include " ./sqlite/sqlite_wrapper.h"
23
- #include " ./ui/cand_ui.h"
21
+ #include " ./src/hook/ime_hook.h"
22
+ #include " ./src/hook/key_handle_func_lib.h"
23
+ #include " ./src/sqlite/sqlite_wrapper.h"
24
+ #include " ./src/ui/cand_ui.h"
25
+ #include " ./src/utils/caret_helper.h"
24
26
#include " ./uiaccess.h"
25
- #include " ./utils/caret_helper.h"
26
27
27
28
#pragma comment(lib, "d2d1.lib")
28
29
#pragma comment(lib, "dwrite.lib")
29
30
30
- int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
31
+ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
32
+ int iCmdShow) {
31
33
// Windos topmost
32
34
PrepareForUIAccess ();
33
35
// 测试是否有内存泄露
@@ -43,7 +45,9 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
43
45
freopen_s (&pCout, " CONOUT$" , " w" , stdout);
44
46
// SetConsoleTitleW("Debug Console");
45
47
SetConsoleTitleW (L" Fany Debug" );
46
- SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED);
48
+ SetConsoleTextAttribute (
49
+ GetStdHandle (STD_OUTPUT_HANDLE),
50
+ FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED);
47
51
}
48
52
// set std::cout to use my custom streambuf
49
53
outbuf ob;
@@ -66,7 +70,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
66
70
// 初始化小鹤双拼的码表,纯双拼二码
67
71
// std::string dbPath = "../../src/flyciku.db";
68
72
std::string dbPath = " ./db/flyciku.db" ;
69
- // sqlPageMap = transTableToMap(dbPath, 8); // 如果把这个放到钩子函数里面会导致程序很慢的
73
+ // sqlPageMap = transTableToMap(dbPath, 8); //
74
+ // 如果把这个放到钩子函数里面会导致程序很慢的
70
75
db = openSqlite (dbPath);
71
76
// 初始化 COM
72
77
CoInitialize (nullptr ); // <-- add this to init COM
@@ -88,14 +93,17 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
88
93
89
94
// 注册窗口
90
95
if (!RegisterClassEx (&winClass)) {
91
- MessageBox (NULL , TEXT (" This program requires Windows NT!" ), L" error" , MB_ICONERROR);
96
+ MessageBox (NULL , TEXT (" This program requires Windows NT!" ), L" error" ,
97
+ MB_ICONERROR);
92
98
return 0 ;
93
99
}
94
100
95
101
// 创建窗口
96
- // 这个 WS_EX_TOOLWINDOW 是为了去掉任务栏区的图标的,这样它就更像一个输入法窗口了
97
- // WS_EX_NOACTIVATE 程序执行之后,窗口不会自动获取焦点
98
- gHwnd = CreateWindowEx (WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE,
102
+ // 这个 WS_EX_TOOLWINDOW
103
+ // 是为了去掉任务栏区的图标的,这样它就更像一个输入法窗口了 WS_EX_NOACTIVATE
104
+ // 程序执行之后,窗口不会自动获取焦点
105
+ gHwnd = CreateWindowEx (WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST |
106
+ WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE,
99
107
L" Direct2D" , // window class name
100
108
L" Draw Rectangle" , // window caption
101
109
WS_POPUP, // window style
@@ -126,25 +134,43 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
126
134
while (GetMessage (&msg, NULL , 0 , 0 )) {
127
135
if (msg.message == WM_FANY_HIDEWINDOW) {
128
136
// ShowWindow(gHwnd, SW_HIDE);
129
- SetWindowPos (gHwnd , HWND_TOPMOST, 0 , 0 , 0 , 0 , SWP_HIDEWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
130
- // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_HIDEWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
137
+ SetWindowPos (gHwnd , HWND_TOPMOST, 0 , 0 , 0 , 0 ,
138
+ SWP_HIDEWINDOW | SWP_NOMOVE | SWP_NOSIZE |
139
+ SWP_NOZORDER | SWP_NOACTIVATE);
140
+ // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_HIDEWINDOW |
141
+ // SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
131
142
} else if (msg.message == WM_FANY_SHOWWINDOW) {
132
143
// ShowWindow(gHwnd, SW_SHOW);
133
- // SetWindowPos(gHwnd, NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
134
- // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
135
- // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
136
- SetWindowPos (gHwnd , HWND_TOPMOST, 0 , 0 , 0 , 0 , SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
137
- // SetWindowPos(gHwnd, HWND_DESKTOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
144
+ // SetWindowPos(gHwnd, NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE
145
+ // | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
146
+ // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW |
147
+ // SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
148
+ // SetWindowPos(gHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW |
149
+ // SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
150
+ SetWindowPos (gHwnd , HWND_TOPMOST, 0 , 0 , 0 , 0 ,
151
+ SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
152
+ // SetWindowPos(gHwnd, HWND_DESKTOP, 0, 0, 0, 0, SWP_SHOWWINDOW |
153
+ // SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
138
154
} else if (msg.message == WM_FANY_REDRAW) {
139
- // wText = L"ni'hc\n1.还行\n2.世界\n3.毛笔\n4.量子\n5.笔画\n6.竟然\n7.什么\n8.可是";
155
+ // wText =
156
+ // L"ni'hc\n1.还行\n2.世界\n3.毛笔\n4.量子\n5.笔画\n6.竟然\n7.什么\n8.可是";
140
157
std::pair<int , int > candSize = calcCandSize (17 , 2 );
141
158
// std::pair<int, int> caretPos = fanyGetCaretPos();
142
159
std::pair<int , int > caretPos = getGeneralCaretPos ();
143
- // SetWindowPos(gHwnd, NULL, caretPos.first, caretPos.second, candSize.first, candSize.second, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
144
- // SetWindowPos(gHwnd, HWND_TOPMOST, caretPos.first, caretPos.second, candSize.first, candSize.second, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
145
- // SetWindowPos(gHwnd, HWND_TOPMOST, caretPos.first, caretPos.second, candSize.first, candSize.second, SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
146
- SetWindowPos (gHwnd , HWND_TOPMOST, caretPos.first , caretPos.second , candSize.first , candSize.second , SWP_SHOWWINDOW | SWP_ASYNCWINDOWPOS);
147
- // SetWindowPos(gHwnd, HWND_DESKTOP, caretPos.first, caretPos.second, candSize.first, candSize.second, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
160
+ // SetWindowPos(gHwnd, NULL, caretPos.first, caretPos.second,
161
+ // candSize.first, candSize.second, SWP_SHOWWINDOW | SWP_NOZORDER |
162
+ // SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS); SetWindowPos(gHwnd,
163
+ // HWND_TOPMOST, caretPos.first, caretPos.second, candSize.first,
164
+ // candSize.second, SWP_SHOWWINDOW | SWP_NOZORDER | SWP_NOACTIVATE |
165
+ // SWP_ASYNCWINDOWPOS); SetWindowPos(gHwnd, HWND_TOPMOST,
166
+ // caretPos.first, caretPos.second, candSize.first, candSize.second,
167
+ // SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
168
+ SetWindowPos (gHwnd , HWND_TOPMOST, caretPos.first , caretPos.second ,
169
+ candSize.first , candSize.second ,
170
+ SWP_SHOWWINDOW | SWP_ASYNCWINDOWPOS);
171
+ // SetWindowPos(gHwnd, HWND_DESKTOP, caretPos.first,
172
+ // caretPos.second, candSize.first, candSize.second, SWP_SHOWWINDOW
173
+ // | SWP_NOZORDER | SWP_NOACTIVATE | SWP_ASYNCWINDOWPOS);
148
174
FanyDrawText (gHwnd , wText);
149
175
} else if (msg.message == WM_HOTKEY) {
150
176
if (1 == msg.wParam ) {
0 commit comments