quickwin 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +21 -26
- package/README.md +3 -6
- package/examples/exec_server.js +139 -31
- package/examples/exec_server.tsx +7 -8
- package/examples/exec_server_worker.js +1 -1
- package/examples/exec_server_worker.ts +2 -2
- package/examples/pdf_preview2.js +1 -1
- package/examples/pdf_preview2.ts +1 -1
- package/examples/pdf_viewer.js +132 -28
- package/examples/pdf_viewer.tsx +1 -1
- package/examples/test_gallery.js +131 -27
- package/examples/test_react_lazy.js +131 -27
- package/examples/test_react_listbox.js +131 -27
- package/examples/test_root_window.js +131 -27
- package/examples/test_tab.js +131 -27
- package/lib/certs.js +13 -8
- package/lib/certs.ts +13 -8
- package/lib/fetch.js +51 -3
- package/lib/fetch.ts +38 -3
- package/lib/ffi/bind.js +94 -5
- package/lib/ffi/bind.ts +107 -10
- package/lib/ffi/ctype.js +33 -7
- package/lib/ffi/ctype.ts +48 -10
- package/lib/ffi/struct.js +92 -14
- package/lib/ffi/struct.ts +108 -19
- package/lib/react-qw/components/ListView.js +1 -0
- package/lib/react-qw/components/PathPicker.js +2 -2
- package/lib/react-qw/index.js +1 -1
- package/lib/react-qw/index.ts +4 -1
- package/lib/text-measure.js +3 -1
- package/lib/text-measure.ts +4 -3
- package/lib/websocket.js +32 -2
- package/lib/websocket.ts +25 -2
- package/lib/windows/advapi32.js +53 -0
- package/lib/windows/advapi32.ts +64 -0
- package/lib/windows/comctl32.js +15 -15
- package/lib/windows/comctl32.ts +15 -16
- package/lib/windows/comdlg32.js +3 -2
- package/lib/windows/comdlg32.ts +3 -2
- package/lib/windows/gdi32.js +328 -26
- package/lib/windows/gdi32.ts +349 -26
- package/lib/windows/kernel32.js +206 -10
- package/lib/windows/kernel32.ts +225 -10
- package/lib/windows/msimg32.js +38 -0
- package/lib/windows/msimg32.ts +45 -0
- package/lib/windows/ntdll.js +3 -2
- package/lib/windows/ntdll.ts +3 -2
- package/lib/windows/ole32.js +1 -1
- package/lib/windows/ole32.ts +1 -1
- package/lib/windows/psapi.js +32 -0
- package/lib/windows/psapi.ts +37 -0
- package/lib/windows/shell32.js +5 -3
- package/lib/windows/shell32.ts +5 -3
- package/lib/windows/structs.js +135 -0
- package/lib/windows/structs.ts +144 -0
- package/lib/windows/user32.js +202 -99
- package/lib/windows/user32.ts +204 -99
- package/lib/windows/version.js +29 -0
- package/lib/windows/version.ts +35 -0
- package/lib/windows/winspool.js +71 -0
- package/lib/windows/winspool.ts +80 -0
- package/package.json +1 -1
- package/quickwin.d.ts +11 -5
- package/quickwin_const.d.ts +136 -0
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/run.js +7 -0
- package/test/run.ts +7 -0
- package/test/test_basic_fetch.js +21 -0
- package/test/test_basic_fetch.ts +17 -0
- package/test/test_ffi.js +6 -6
- package/test/test_ffi.ts +6 -6
- package/test/test_ffi_abi.js +55 -0
- package/test/test_ffi_abi.ts +56 -0
- package/test/test_ffi_array.js +116 -0
- package/test/test_ffi_array.ts +141 -0
- package/test/test_ffi_bind.js +82 -0
- package/test/test_ffi_bind.ts +71 -0
- package/test/test_files.js +102 -0
- package/test/test_files.ts +121 -0
- package/test/test_gdi_draw.js +681 -0
- package/test/test_gdi_draw.ts +725 -0
- package/test/test_net_fetch.js +4 -3
- package/test/test_net_fetch.ts +4 -3
- package/test/test_printer.js +137 -0
- package/test/test_printer.ts +148 -0
- package/test/test_proc.js +141 -0
- package/test/test_proc.ts +163 -0
- package/test/test_react_complex.js +131 -27
- package/test/test_react_counter.js +131 -27
- package/test/test_react_flex.js +131 -27
- package/test/test_react_hidden.js +131 -27
- package/test/test_react_listview_link.js +131 -27
- package/test/test_react_notify.js +131 -27
- package/test/test_react_render.js +131 -27
- package/test/test_registry.js +74 -0
- package/test/test_registry.ts +95 -0
- package/test/test_sysinfo.js +122 -0
- package/test/test_sysinfo.ts +141 -0
- package/test/test_wolfssl_read.js +45 -44
- package/test/test_wolfssl_read.ts +42 -42
package/lib/windows/user32.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import * as os from 'os'
|
|
26
26
|
import { bind, type CodecMap } from '../ffi/bind.js'
|
|
27
27
|
// 只 import 注册了 encoder 的结构(纯入参位);POINT 等出/就地位不注册,运行时无需引用
|
|
28
|
-
import { RECT, SCROLLINFO } from './structs.js'
|
|
28
|
+
import { MSG, RECT, SCROLLINFO, WNDCLASSEXW } from './structs.js'
|
|
29
29
|
|
|
30
30
|
// dll 名部分应用:85 个绑定共用,签名字符串不再重复 'user32.dll'。
|
|
31
31
|
// 不能用 bind.bind(null, dll)——泛型在部分应用点坍缩(返回 never);工厂转调让
|
|
@@ -43,7 +43,8 @@ const LONG_PTR_SYM = os.arch === 'x64' ? 'PtrW' : 'W'
|
|
|
43
43
|
|
|
44
44
|
// ============ 窗口 / 基本 ============
|
|
45
45
|
|
|
46
|
-
/**
|
|
46
|
+
/** 创建窗口
|
|
47
|
+
* @returns 窗口句柄;失败 → NULL
|
|
47
48
|
* @param args_0 dwExStyle WS_EX_*
|
|
48
49
|
* @param args_1 lpClassName 窗口类名 string 或 NULL
|
|
49
50
|
* @param args_2 lpWindowName 窗口标题 string 或 NULL
|
|
@@ -58,14 +59,17 @@ const LONG_PTR_SYM = os.arch === 'x64' ? 'PtrW' : 'W'
|
|
|
58
59
|
* @param args_11 lpParam 窗口创建参数,传 NULL */
|
|
59
60
|
export const CreateWindowEx = /*@__PURE__*/ b('CreateWindowExW',
|
|
60
61
|
'u32 <WCHAR>ptr <WCHAR>ptr u32 i32 i32 i32 i32 <HWND>ptr <HMENU>ptr <HMODULE>ptr <>ptr -> <HWND>ptr')
|
|
61
|
-
/**
|
|
62
|
+
/** 销毁窗口
|
|
63
|
+
* @returns 成功 → 非 0
|
|
62
64
|
* @param args_0 hWnd */
|
|
63
65
|
export const DestroyWindow = /*@__PURE__*/ b('DestroyWindow', '<HWND>ptr -> i32')
|
|
64
|
-
/** 显示/隐藏窗口(nCmdShow = gui.WindowStyle
|
|
66
|
+
/** 显示/隐藏窗口(nCmdShow = gui.WindowStyle 类常量)
|
|
67
|
+
* @returns 先前可见性
|
|
65
68
|
* @param args_0 hWnd
|
|
66
69
|
* @param args_1 nCmdShow 显示命令(SW_SHOW/SW_HIDE 等) */
|
|
67
70
|
export const ShowWindow = /*@__PURE__*/ b('ShowWindow', '<HWND>ptr i32@ShowWindowCmd -> i32')
|
|
68
71
|
/** 移动/缩放窗口
|
|
72
|
+
* @returns 成功 → 非 0;失败 → 0(原因见 GetLastError)
|
|
69
73
|
* @param args_0 hWnd
|
|
70
74
|
* @param args_1 x 新左上角
|
|
71
75
|
* @param args_2 y 新左上角
|
|
@@ -74,6 +78,7 @@ export const ShowWindow = /*@__PURE__*/ b('ShowWindow', '<HWND>ptr i32@ShowWindo
|
|
|
74
78
|
* @param args_5 bRepaint 非 0 立即重绘 */
|
|
75
79
|
export const MoveWindow = /*@__PURE__*/ b('MoveWindow', '<HWND>ptr i32 i32 i32 i32 i32 -> i32')
|
|
76
80
|
/** 设窗口位置/层级
|
|
81
|
+
* @returns 成功 → 非 0;失败 → 0(原因见 GetLastError)
|
|
77
82
|
* @param args_0 hWnd
|
|
78
83
|
* @param args_1 hWndInsertAfter 置前窗口或 HWND_TOP(-1)/BOTTOM(-2)/NOTOPMOST(-2) 常量
|
|
79
84
|
* @param args_2 x 新位置
|
|
@@ -85,131 +90,163 @@ export const MoveWindow = /*@__PURE__*/ b('MoveWindow', '<HWND>ptr i32 i32 i32 i
|
|
|
85
90
|
// 值域是枚举而非句柄 —— 指针位 @ 标注试点。
|
|
86
91
|
export const SetWindowPos = /*@__PURE__*/ b('SetWindowPos', '<HWND>ptr <>ptr@SetWindowPosHwnd i32 i32 i32 i32 u32 -> i32')
|
|
87
92
|
/** 取窗口外框矩形(屏幕坐标)
|
|
93
|
+
* @returns 成功 → 非 0;失败 → 0(原因见 GetLastError)
|
|
88
94
|
* @param args_0 hWnd
|
|
89
95
|
* @param args_1 lpRect 出参槽,传 RECT.alloc().ptr、RECT.decode 读回 */
|
|
90
96
|
export const GetWindowRect = /*@__PURE__*/ b('GetWindowRect', '<HWND>ptr <RECT>ptr -> i32')
|
|
91
97
|
/** 取窗口客户区矩形
|
|
98
|
+
* @returns 成功 → 非 0;失败 → 0(原因见 GetLastError)
|
|
92
99
|
* @param args_0 hWnd
|
|
93
100
|
* @param args_1 lpRect 出参槽,传 RECT.alloc().ptr、RECT.decode 读回 */
|
|
94
101
|
export const GetClientRect = /*@__PURE__*/ b('GetClientRect', '<HWND>ptr <RECT>ptr -> i32')
|
|
95
|
-
/**
|
|
102
|
+
/** 是否有效窗口句柄
|
|
103
|
+
* @returns 是 → 非 0
|
|
96
104
|
* @param args_0 hWnd */
|
|
97
105
|
export const IsWindow = /*@__PURE__*/ b('IsWindow', '<HWND>ptr -> i32')
|
|
98
|
-
/**
|
|
106
|
+
/** 窗口是否可见
|
|
107
|
+
* @returns 是 → 非 0
|
|
99
108
|
* @param args_0 hWnd */
|
|
100
109
|
export const IsWindowVisible = /*@__PURE__*/ b('IsWindowVisible', '<HWND>ptr -> i32')
|
|
101
|
-
/**
|
|
110
|
+
/** 窗口是否最小化
|
|
111
|
+
* @returns 是 → 非 0
|
|
102
112
|
* @param args_0 hWnd */
|
|
103
113
|
export const IsIconic = /*@__PURE__*/ b('IsIconic', '<HWND>ptr -> i32')
|
|
104
|
-
/**
|
|
114
|
+
/** 取前台窗口
|
|
115
|
+
* @returns 前台窗口句柄;无 → NULL */
|
|
105
116
|
export const GetForegroundWindow = /*@__PURE__*/ b('GetForegroundWindow', ' -> <HWND>ptr')
|
|
106
|
-
/**
|
|
117
|
+
/** 请求设前台窗口
|
|
118
|
+
* @returns 成功 → 非 0
|
|
107
119
|
* @param args_0 hWnd 目标窗口 */
|
|
108
120
|
export const SetForegroundWindow = /*@__PURE__*/ b('SetForegroundWindow', '<HWND>ptr -> i32')
|
|
109
|
-
/**
|
|
121
|
+
/** 取桌面窗口
|
|
122
|
+
* @returns 桌面窗口句柄(恒非 NULL) */
|
|
110
123
|
export const GetDesktopWindow = /*@__PURE__*/ b('GetDesktopWindow', ' -> <HWND>ptr')
|
|
111
|
-
/**
|
|
124
|
+
/** 按类名+标题查找顶层窗口
|
|
125
|
+
* @returns 窗口句柄;无 → NULL
|
|
112
126
|
* @param args_0 lpClassName 窗口类名 string 或 NULL
|
|
113
127
|
* @param args_1 lpWindowName 窗口标题 string 或 NULL */
|
|
114
128
|
export const FindWindow = /*@__PURE__*/ b('FindWindowW', '<WCHAR>ptr <WCHAR>ptr -> <HWND>ptr')
|
|
115
129
|
/** 在 hWndParent 的子窗口链里按类名+标题查找,从 hWndChildAfter 之后开始;
|
|
116
|
-
*
|
|
130
|
+
* 链式遍历:FindWindowEx(NULL, prev, NULL, NULL)
|
|
131
|
+
* @returns 窗口句柄;无更多窗口 → NULL
|
|
117
132
|
* @param args_0 hWndParent 父窗口,NULL = 遍历顶层
|
|
118
133
|
* @param args_1 hWndChildAfter 起始子窗口,NULL = 从头
|
|
119
134
|
* @param args_2 lpszClass 类名 string 或 NULL = 不过滤
|
|
120
135
|
* @param args_3 lpszWindow 标题 string 或 NULL = 不过滤 */
|
|
121
136
|
export const FindWindowEx = /*@__PURE__*/ b('FindWindowExW',
|
|
122
137
|
'<HWND>ptr <HWND>ptr <WCHAR>ptr <WCHAR>ptr -> <HWND>ptr')
|
|
123
|
-
/**
|
|
138
|
+
/** 取窗口标题
|
|
139
|
+
* @returns 写入字符数,不含 NUL
|
|
124
140
|
* @param args_0 hWnd
|
|
125
141
|
* @param args_1 lpString 出参缓冲,传 WCHAR.alloc(n)、WCHAR.decode(buf) 读回
|
|
126
142
|
* @param args_2 nMaxCount 缓冲容量(字符数,含 NUL 余量) */
|
|
127
143
|
export const GetWindowText = /*@__PURE__*/ b('GetWindowTextW', '<HWND>ptr <BYTE>ptr i32 -> i32')
|
|
128
|
-
/** 设窗口标题(传 string 或 NULL
|
|
144
|
+
/** 设窗口标题(传 string 或 NULL 清空)
|
|
145
|
+
* @returns 成功 → 非 0
|
|
129
146
|
* @param args_0 hWnd
|
|
130
147
|
* @param args_1 lpString 新标题 string 或 NULL */
|
|
131
148
|
export const SetWindowText = /*@__PURE__*/ b('SetWindowTextW', '<HWND>ptr <WCHAR>ptr -> i32')
|
|
132
|
-
/**
|
|
149
|
+
/** 取窗口标题长度
|
|
150
|
+
* @returns 标题长度(字符数,不含 NUL)
|
|
133
151
|
* @param args_0 hWnd */
|
|
134
152
|
export const GetWindowTextLength = /*@__PURE__*/ b('GetWindowTextLengthW', '<HWND>ptr -> i32')
|
|
135
|
-
/**
|
|
153
|
+
/** 取窗口类名
|
|
154
|
+
* @returns 写入字符数
|
|
136
155
|
* @param args_0 hWnd
|
|
137
156
|
* @param args_1 lpClassName 出参缓冲,传 WCHAR.alloc(n)、WCHAR.decode(buf) 读回
|
|
138
157
|
* @param args_2 nMaxCount 缓冲容量(字符数) */
|
|
139
158
|
export const GetClassName = /*@__PURE__*/ b('GetClassNameW', '<HWND>ptr <BYTE>ptr i32 -> i32')
|
|
140
|
-
/**
|
|
159
|
+
/** 取窗口附加数据(ia32 走 GetWindowLongW)
|
|
160
|
+
* @returns 附加数据值;0 保真(值有符号读)
|
|
141
161
|
* @param args_0 hWnd
|
|
142
162
|
* @param args_1 nIndex 索引(GWLP_WNDPROC/GWLP_USERDATA/GWL_STYLE 等) */
|
|
143
163
|
export const GetWindowLongPtr = /*@__PURE__*/ b('GetWindowLong' + LONG_PTR_SYM, '<HWND>ptr i32@Gwlp -> <>ptr')
|
|
144
|
-
/**
|
|
164
|
+
/** 设窗口附加数据
|
|
165
|
+
* @returns 先前值(0 保真,值有符号读)
|
|
145
166
|
* @param args_0 hWnd
|
|
146
167
|
* @param args_1 nIndex 索引(GWLP_* / GWL_*)
|
|
147
168
|
* @param args_2 dwNewLong 新值(整数或指针混合值) */
|
|
148
169
|
export const SetWindowLongPtr = /*@__PURE__*/ b('SetWindowLong' + LONG_PTR_SYM, '<HWND>ptr i32@Gwlp <>ptr -> <>ptr')
|
|
149
|
-
/**
|
|
170
|
+
/** 取窗口所属线程(第二参可传 NULL 不取进程 ID)
|
|
171
|
+
* @returns 线程 ID
|
|
150
172
|
* @param args_0 hWnd
|
|
151
173
|
* @param args_1 lpdwProcessId 出参槽,传 Uint32Array(1).buffer 或 NULL */
|
|
152
174
|
export const GetWindowThreadProcessId = /*@__PURE__*/ b('GetWindowThreadProcessId', '<HWND>ptr <BYTE>ptr -> u32')
|
|
153
|
-
/**
|
|
175
|
+
/** 启用/禁用窗口输入
|
|
176
|
+
* @returns 先前状态
|
|
154
177
|
* @param args_0 hWnd
|
|
155
178
|
* @param args_1 bEnable 非 0 启用 */
|
|
156
179
|
export const EnableWindow = /*@__PURE__*/ b('EnableWindow', '<HWND>ptr i32 -> i32')
|
|
157
|
-
/**
|
|
180
|
+
/** 取父窗口
|
|
181
|
+
* @returns 父窗口句柄;无 → NULL
|
|
158
182
|
* @param args_0 hWnd */
|
|
159
183
|
export const GetParent = /*@__PURE__*/ b('GetParent', '<HWND>ptr -> <HWND>ptr')
|
|
160
|
-
/**
|
|
184
|
+
/** 设父窗口
|
|
185
|
+
* @returns 先前父窗口
|
|
161
186
|
* @param args_0 hWndChild 子窗口
|
|
162
187
|
* @param args_1 hWndNewParent 新父窗口 */
|
|
163
188
|
export const SetParent = /*@__PURE__*/ b('SetParent', '<HWND>ptr <HWND>ptr -> <HWND>ptr')
|
|
164
|
-
/**
|
|
189
|
+
/** 按关系取相邻窗口
|
|
190
|
+
* @returns 窗口句柄;无 → NULL
|
|
165
191
|
* @param args_0 hWnd
|
|
166
192
|
* @param args_1 uCmd 关系(GW_CHILD=4/GW_HWNDNEXT=2/GW_OWNER=4 等 GW_*) */
|
|
167
193
|
export const GetWindow = /*@__PURE__*/ b('GetWindow', '<HWND>ptr u32@GetWindowCmd -> <HWND>ptr')
|
|
168
|
-
/**
|
|
194
|
+
/** 注册窗口类
|
|
195
|
+
* @returns 类 ATOM;失败 → 0
|
|
169
196
|
* @param args_0 lpwcx WNDCLASSEXW.encode({ cbSize: WNDCLASSEXW.size, ... }).ptr(见 structs.ts) */
|
|
170
|
-
export const RegisterClassEx = /*@__PURE__*/ b('RegisterClassExW', '<
|
|
197
|
+
export const RegisterClassEx = /*@__PURE__*/ b('RegisterClassExW', '<WNDCLASSEXW>ptr -> u16', { WNDCLASSEXW })
|
|
171
198
|
|
|
172
199
|
// ============ 焦点 / 激活 ============
|
|
173
200
|
|
|
174
|
-
/**
|
|
201
|
+
/** 设输入焦点
|
|
202
|
+
* @returns 先前焦点窗口
|
|
175
203
|
* @param args_0 hWnd 接收焦点的窗口 */
|
|
176
204
|
export const SetFocus = /*@__PURE__*/ b('SetFocus', '<HWND>ptr -> <HWND>ptr')
|
|
177
|
-
/**
|
|
205
|
+
/** 取调用线程输入焦点
|
|
206
|
+
* @returns 焦点窗口句柄;无 → NULL */
|
|
178
207
|
export const GetFocus = /*@__PURE__*/ b('GetFocus', ' -> <HWND>ptr')
|
|
179
|
-
/**
|
|
208
|
+
/** 取调用线程激活窗口
|
|
209
|
+
* @returns 激活窗口句柄;无 → NULL */
|
|
180
210
|
export const GetActiveWindow = /*@__PURE__*/ b('GetActiveWindow', ' -> <HWND>ptr')
|
|
181
|
-
/**
|
|
211
|
+
/** 设调用线程激活窗口
|
|
212
|
+
* @returns 先前窗口
|
|
182
213
|
* @param args_0 hWnd */
|
|
183
214
|
export const SetActiveWindow = /*@__PURE__*/ b('SetActiveWindow', '<HWND>ptr -> <HWND>ptr')
|
|
184
215
|
|
|
185
216
|
// ============ 消息循环 ============
|
|
186
217
|
|
|
187
|
-
/**
|
|
188
|
-
* @
|
|
218
|
+
/** 取消息(阻塞式);分发前先 TranslateMessage
|
|
219
|
+
* @returns -1 = 出错、0 = WM_QUIT、>0 = 有消息
|
|
220
|
+
* @param args_0 lpMsg MSG 出参缓冲(MSG.alloc().ptr,品牌位不收裸 PAB)
|
|
189
221
|
* @param args_1 hWndFilter 窗口过滤,可 NULL
|
|
190
222
|
* @param args_2 wMsgFilterMin 消息下限,0 = 不过滤
|
|
191
223
|
* @param args_3 wMsgFilterMax 消息上限,0 = 不过滤 */
|
|
192
|
-
export const GetMessage = /*@__PURE__*/ b('GetMessageW', '<
|
|
193
|
-
/**
|
|
224
|
+
export const GetMessage = /*@__PURE__*/ b('GetMessageW', '<MSG>ptr <HWND>ptr u32 u32 -> i32')
|
|
225
|
+
/** 非阻塞查消息
|
|
226
|
+
* @returns 有消息 → 非 0
|
|
194
227
|
* @param args_0 lpMsg MSG 出参缓冲
|
|
195
228
|
* @param args_1 hWndFilter 窗口过滤,可 NULL
|
|
196
229
|
* @param args_2 wMsgFilterMin 消息下限,0 = 不过滤
|
|
197
230
|
* @param args_3 wMsgFilterMax 消息上限,0 = 不过滤
|
|
198
231
|
* @param args_4 wRemoveMsg PM_NOREMOVE(0) / PM_REMOVE(1) */
|
|
199
|
-
export const PeekMessage = /*@__PURE__*/ b('PeekMessageW', '<
|
|
200
|
-
/** 把 WM_KEYDOWN/UP
|
|
232
|
+
export const PeekMessage = /*@__PURE__*/ b('PeekMessageW', '<MSG>ptr <HWND>ptr u32 u32 u32 -> i32')
|
|
233
|
+
/** 把 WM_KEYDOWN/UP 转成字符消息(翻译结果留在队列)
|
|
234
|
+
* @returns 可翻译 → 非 0
|
|
201
235
|
* @param args_0 lpMsg 取到的 MSG 缓冲(GetMessage/PeekMessage 的出参) */
|
|
202
|
-
export const TranslateMessage = /*@__PURE__*/ b('TranslateMessage', '<
|
|
203
|
-
/** 分发 MSG
|
|
236
|
+
export const TranslateMessage = /*@__PURE__*/ b('TranslateMessage', '<MSG>ptr -> i32', { MSG })
|
|
237
|
+
/** 分发 MSG 给窗口过程
|
|
238
|
+
* @returns 处理结果(0 保真,有符号读)
|
|
204
239
|
* @param args_0 lpMsg MSG 缓冲(GetMessage/PeekMessage 的出参) */
|
|
205
|
-
export const DispatchMessage = /*@__PURE__*/ b('DispatchMessageW', '<
|
|
206
|
-
/**
|
|
240
|
+
export const DispatchMessage = /*@__PURE__*/ b('DispatchMessageW', '<MSG>ptr -> <>ptr', { MSG })
|
|
241
|
+
/** 异步投递消息到窗口线程队列
|
|
242
|
+
* @returns 成功 → 非 0
|
|
207
243
|
* @param args_0 hWnd 目标窗口
|
|
208
244
|
* @param args_1 Msg 消息号(WM_*)
|
|
209
245
|
* @param args_2 wParam 消息参数(混合位)
|
|
210
246
|
* @param args_3 lParam 消息参数(混合位) */
|
|
211
247
|
export const PostMessage = /*@__PURE__*/ b('PostMessageW', '<HWND>ptr u32@AnyMsg <>ptr <>ptr -> i32')
|
|
212
|
-
/**
|
|
248
|
+
/** 同步发送消息并等窗口过程处理
|
|
249
|
+
* @returns 处理结果(0 保真,有符号读)
|
|
213
250
|
* @param args_0 hWnd 目标窗口
|
|
214
251
|
* @param args_1 Msg 消息号(WM_*)
|
|
215
252
|
* @param args_2 wParam 消息参数(整数或缓冲指针)
|
|
@@ -218,199 +255,255 @@ export const SendMessage = /*@__PURE__*/ b('SendMessageW', '<HWND>ptr u32@AnyMsg
|
|
|
218
255
|
/** 退出消息循环(投递 WM_QUIT,wParam = 退出码)
|
|
219
256
|
* @param args_0 nExitCode 退出码 */
|
|
220
257
|
export const PostQuitMessage = /*@__PURE__*/ b('PostQuitMessage', 'i32 -> void')
|
|
221
|
-
/**
|
|
258
|
+
/** 默认窗口过程(未处理消息的兜底)
|
|
259
|
+
* @returns 处理结果(0 保真,有符号读)
|
|
222
260
|
* @param args_0 hWnd
|
|
223
261
|
* @param args_1 Msg 消息号
|
|
224
262
|
* @param args_2 wParam 消息参数
|
|
225
263
|
* @param args_3 lParam 消息参数 */
|
|
226
264
|
export const DefWindowProc = /*@__PURE__*/ b('DefWindowProcW', '<HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr')
|
|
227
265
|
/** 调用窗口过程(wndProc = GetWindowLongPtr(GWLP_WNDPROC) 读回的过程指针——无品牌混合位,
|
|
228
|
-
*
|
|
266
|
+
* 仅对本线程窗口调用)
|
|
267
|
+
* @returns 处理结果(0 保真,有符号读)
|
|
229
268
|
* @param args_0 lpPrevWndFunc 原窗口过程指针
|
|
230
269
|
* @param args_1 hWnd
|
|
231
270
|
* @param args_2 Msg 消息号
|
|
232
271
|
* @param args_3 wParam 消息参数
|
|
233
272
|
* @param args_4 lParam 消息参数 */
|
|
234
273
|
export const CallWindowProc = /*@__PURE__*/ b('CallWindowProcW', '<>ptr <HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr')
|
|
235
|
-
/** 注册系统级唯一消息 ID
|
|
274
|
+
/** 注册系统级唯一消息 ID(按字符串比较)
|
|
275
|
+
* @returns 消息 ID;失败 → 0
|
|
236
276
|
* @param args_0 lpString 消息名 string */
|
|
237
277
|
export const RegisterWindowMessage = /*@__PURE__*/ b('RegisterWindowMessageW', '<WCHAR>ptr -> u32')
|
|
238
278
|
|
|
239
279
|
// ============ 绘制 / DC ============
|
|
240
280
|
|
|
241
|
-
/** 取窗口 DC(hWnd 传 NULL →
|
|
281
|
+
/** 取窗口 DC(hWnd 传 NULL → 桌面窗口);用完必须 ReleaseDC 配对
|
|
282
|
+
* @returns DC;失败 → NULL
|
|
242
283
|
* @param args_0 hWnd NULL = 桌面窗口 */
|
|
243
284
|
export const GetDC = /*@__PURE__*/ b('GetDC', '<HWND>ptr -> <HDC>ptr')
|
|
244
|
-
/** 归还 GetDC/GetWindowDC 取的 DC(首参窗口句柄、第二参 DC
|
|
285
|
+
/** 归还 GetDC/GetWindowDC 取的 DC(首参窗口句柄、第二参 DC,误传编译不过)
|
|
286
|
+
* @returns 成功 → 非 0
|
|
245
287
|
* @param args_0 hWnd 取 DC 时的窗口句柄
|
|
246
288
|
* @param args_1 hdc 要归还的 DC */
|
|
247
289
|
export const ReleaseDC = /*@__PURE__*/ b('ReleaseDC', '<HWND>ptr <HDC>ptr! -> i32')
|
|
248
|
-
/** 让窗口把自己画进 hdcBlt(可截被遮挡 / 最小化的窗口;位图须按整窗尺寸建,从 (0,0)
|
|
249
|
-
* 成功 → 非 0
|
|
290
|
+
/** 让窗口把自己画进 hdcBlt(可截被遮挡 / 最小化的窗口;位图须按整窗尺寸建,从 (0,0) 填满)
|
|
291
|
+
* @returns 成功 → 非 0
|
|
250
292
|
* @param args_0 hWnd 被截窗口
|
|
251
293
|
* @param args_1 hdcBlt 目标 DC
|
|
252
294
|
* @param args_2 nFlags PW_* 标志(PW_CLIENTONLY=1/PW_RENDERFULLCONTENT=2,Win8.1+),XP/Win7 传 0 */
|
|
253
295
|
export const PrintWindow = /*@__PURE__*/ b('PrintWindow', '<HWND>ptr <HDC>ptr! u32 -> i32')
|
|
254
|
-
/** 取整个窗口(含边框标题)DC
|
|
296
|
+
/** 取整个窗口(含边框标题)DC;配对 ReleaseDC
|
|
297
|
+
* @returns DC;失败 → NULL
|
|
255
298
|
* @param args_0 hWnd */
|
|
256
299
|
export const GetWindowDC = /*@__PURE__*/ b('GetWindowDC', '<HWND>ptr -> <HDC>ptr')
|
|
257
|
-
/**
|
|
300
|
+
/** 开始重绘;配对 EndPaint
|
|
301
|
+
* @returns DC
|
|
258
302
|
* @param args_0 hWnd 重绘窗口
|
|
259
303
|
* @param args_1 lpPaint 出参槽,PAINTSTRUCT.alloc().ptr(见 structs.ts) */
|
|
260
|
-
export const BeginPaint = /*@__PURE__*/ b('BeginPaint', '<HWND>ptr <
|
|
261
|
-
/** 结束重绘(传 BeginPaint 同一 buffer
|
|
304
|
+
export const BeginPaint = /*@__PURE__*/ b('BeginPaint', '<HWND>ptr <PAINTSTRUCT>ptr -> <HDC>ptr')
|
|
305
|
+
/** 结束重绘(传 BeginPaint 同一 buffer)
|
|
306
|
+
* @returns 成功 → 非 0
|
|
262
307
|
* @param args_0 hWnd 重绘窗口
|
|
263
308
|
* @param args_1 lpPaint BeginPaint 同一 PAINTSTRUCT 缓冲 */
|
|
264
|
-
export const EndPaint = /*@__PURE__*/ b('EndPaint', '<HWND>ptr <
|
|
265
|
-
/**
|
|
309
|
+
export const EndPaint = /*@__PURE__*/ b('EndPaint', '<HWND>ptr <PAINTSTRUCT>ptr -> i32')
|
|
310
|
+
/** 文本排版绘制
|
|
311
|
+
* @returns 文本行高
|
|
266
312
|
* @param args_0 hdc 目标 DC
|
|
267
313
|
* @param args_1 lpchText 文本 string(自动 UTF-16 编码)
|
|
268
314
|
* @param args_2 cchText 字符数(-1 = 自动算到 NUL)
|
|
269
315
|
* @param args_3 lpRect 矩形(双向不注册 encoder;CALCRECT 就地写回:RECT.encode(初值) 传 .ptr、decode 读回)
|
|
270
316
|
* @param args_4 uFormat DT_* 排版标志(gui.DrawTextFlag) */
|
|
271
317
|
export const DrawText = /*@__PURE__*/ b('DrawTextW', '<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32')
|
|
272
|
-
/**
|
|
318
|
+
/** 用画刷填充矩形
|
|
319
|
+
* @returns 填充高度
|
|
273
320
|
* @param args_0 hdc 目标 DC
|
|
274
321
|
* @param args_1 lprc 矩形(DeepPartial RECT 对象或 RECT.alloc().ptr)
|
|
275
322
|
* @param args_2 hbr 画刷句柄(无品牌 <>ptr) */
|
|
276
323
|
export const FillRect = /*@__PURE__*/ b('FillRect', '<HDC>ptr! <RECT>ptr <>ptr -> i32', { RECT })
|
|
277
|
-
|
|
324
|
+
|
|
325
|
+
/** 用画刷画 1px 空心矩形边框(只描边不填充);成功与否请以像素/后续状态断言
|
|
326
|
+
* @returns 返回值 Windows 版本间不可靠
|
|
327
|
+
* @param args_1 lprc 矩形(DeepPartial RECT 对象或 RECT.alloc().ptr)
|
|
328
|
+
* @param args_2 hbr 画刷句柄(CreateSolidBrush 等返回的 <>ptr 族内互传) */
|
|
329
|
+
export const FrameRect = /*@__PURE__*/ b('FrameRect', '<HDC>ptr! <RECT>ptr <>ptr -> i32', { RECT })
|
|
330
|
+
|
|
331
|
+
/** 矩形区域逐像素按位取反(白→黑、红→青;再反一次可逆还原)
|
|
332
|
+
* @returns 成功 → 非 0
|
|
333
|
+
* @param args_1 lprc 矩形(DeepPartial RECT 对象或 RECT.alloc().ptr) */
|
|
334
|
+
export const InvertRect = /*@__PURE__*/ b('InvertRect', '<HDC>ptr! <RECT>ptr -> i32', { RECT })
|
|
335
|
+
/** 标记窗口区域失效(触发重绘)
|
|
336
|
+
* @returns 成功 → 非 0
|
|
278
337
|
* @param args_0 hWnd
|
|
279
338
|
* @param args_1 lpRect 失效区域(DeepPartial RECT / .ptr / NULL = 全窗)
|
|
280
339
|
* @param args_2 bErase 非 0 先擦背景 */
|
|
281
340
|
export const InvalidateRect = /*@__PURE__*/ b('InvalidateRect', '<HWND>ptr <RECT>ptr i32 -> i32', { RECT })
|
|
282
|
-
/**
|
|
341
|
+
/** 立即重绘失效区域
|
|
342
|
+
* @returns 成功 → 非 0
|
|
283
343
|
* @param args_0 hWnd */
|
|
284
344
|
export const UpdateWindow = /*@__PURE__*/ b('UpdateWindow', '<HWND>ptr -> i32')
|
|
285
345
|
|
|
286
346
|
// ============ 光标 / 坐标 / 捕获 ============
|
|
287
347
|
|
|
288
|
-
/** 设光标形状(误传 HWND
|
|
348
|
+
/** 设光标形状(误传 HWND 编译不过)
|
|
349
|
+
* @returns 先前光标
|
|
289
350
|
* @param args_0 hCursor 光标句柄 */
|
|
290
351
|
export const SetCursor = /*@__PURE__*/ b('SetCursor', '<HCURSOR>ptr -> <HCURSOR>ptr')
|
|
291
|
-
/**
|
|
352
|
+
/** 加载光标资源
|
|
353
|
+
* @returns 光标句柄;失败 → NULL
|
|
292
354
|
* @param args_0 hInstance 模块句柄,NULL = 系统光标
|
|
293
355
|
* @param args_1 lpCursorName MAKEINTRESOURCE 整数(如 32512 = IDC_ARROW)直传 */
|
|
294
356
|
export const LoadCursor = /*@__PURE__*/ b('LoadCursorW', '<HMODULE>ptr <>ptr -> <HCURSOR>ptr')
|
|
295
|
-
/**
|
|
357
|
+
/** 取光标屏幕坐标
|
|
358
|
+
* @returns 成功 → 非 0
|
|
296
359
|
* @param args_0 lpPoint 出参槽,传 POINT.alloc().ptr、POINT.decode 读回 */
|
|
297
360
|
export const GetCursorPos = /*@__PURE__*/ b('GetCursorPos', '<POINT>ptr -> i32')
|
|
298
|
-
/**
|
|
361
|
+
/** 设光标屏幕坐标
|
|
362
|
+
* @returns 成功 → 非 0
|
|
299
363
|
* @param args_0 x 屏幕 x
|
|
300
364
|
* @param args_1 y 屏幕 y */
|
|
301
365
|
export const SetCursorPos = /*@__PURE__*/ b('SetCursorPos', 'i32 i32 -> i32')
|
|
302
|
-
/**
|
|
366
|
+
/** 显示/隐藏光标(计数式)
|
|
367
|
+
* @returns 新计数
|
|
303
368
|
* @param args_0 bShow >0 显示(内部计数),<0 隐藏 */
|
|
304
369
|
export const ShowCursor = /*@__PURE__*/ b('ShowCursor', 'i32 -> i32')
|
|
305
|
-
/** 屏幕坐标 → 客户区坐标(就地更新,双向不注册 encoder
|
|
370
|
+
/** 屏幕坐标 → 客户区坐标(就地更新,双向不注册 encoder)
|
|
371
|
+
* @returns 成功 → 非 0
|
|
306
372
|
* @param args_0 hWnd 目标窗口
|
|
307
373
|
* @param args_1 lpPoint 就地更新的 POINT(encode(初值) 传 .ptr、decode 读回) */
|
|
308
374
|
export const ScreenToClient = /*@__PURE__*/ b('ScreenToClient', '<HWND>ptr <POINT>ptr -> i32')
|
|
309
|
-
/** 客户区坐标 →
|
|
375
|
+
/** 客户区坐标 → 屏幕坐标(就地更新,同上)
|
|
376
|
+
* @returns 成功 → 非 0
|
|
310
377
|
* @param args_0 hWnd 源窗口
|
|
311
378
|
* @param args_1 lpPoint 就地更新的 POINT(同 ScreenToClient) */
|
|
312
379
|
export const ClientToScreen = /*@__PURE__*/ b('ClientToScreen', '<HWND>ptr <POINT>ptr -> i32')
|
|
313
|
-
/**
|
|
380
|
+
/** 批量坐标系转换
|
|
381
|
+
* @returns 偏移差的低/高 16 位打包值
|
|
314
382
|
* @param args_0 hWndFrom 源窗口
|
|
315
383
|
* @param args_1 hWndTo 目标窗口
|
|
316
384
|
* @param args_2 lpPoints POINT 数组缓冲
|
|
317
385
|
* @param args_3 cPoints 点数 */
|
|
318
386
|
export const MapWindowPoints = /*@__PURE__*/ b('MapWindowPoints', '<HWND>ptr <HWND>ptr <BYTE>ptr u32 -> i32')
|
|
319
|
-
/**
|
|
387
|
+
/** 取当前捕获鼠标的窗口
|
|
388
|
+
* @returns 窗口句柄;无 → NULL */
|
|
320
389
|
export const GetCapture = /*@__PURE__*/ b('GetCapture', ' -> <HWND>ptr')
|
|
321
|
-
/**
|
|
390
|
+
/** 捕获鼠标输入到窗口
|
|
391
|
+
* @returns 先前捕获窗口
|
|
322
392
|
* @param args_0 hWnd 接收捕获的窗口 */
|
|
323
393
|
export const SetCapture = /*@__PURE__*/ b('SetCapture', '<HWND>ptr -> <HWND>ptr')
|
|
324
|
-
/**
|
|
394
|
+
/** 释放鼠标捕获
|
|
395
|
+
* @returns 成功 → 非 0 */
|
|
325
396
|
export const ReleaseCapture = /*@__PURE__*/ b('ReleaseCapture', ' -> i32')
|
|
326
397
|
|
|
327
398
|
// ============ 键盘 / 输入 ============
|
|
328
399
|
|
|
329
|
-
/**
|
|
400
|
+
/** 取虚拟键状态
|
|
401
|
+
* @returns SHORT:高位 0x8000 = 按下、低位 = 自上次调用的切换
|
|
330
402
|
* @param args_0 nVirtKey 虚拟键码(VK_*) */
|
|
331
403
|
export const GetKeyState = /*@__PURE__*/ b('GetKeyState', 'i32 -> i32')
|
|
332
|
-
/**
|
|
404
|
+
/** 取虚拟键全局按下状态
|
|
405
|
+
* @returns 高位 0x8000 = 当前按下
|
|
333
406
|
* @param args_0 nVirtKey 虚拟键码(VK_*) */
|
|
334
407
|
export const GetAsyncKeyState = /*@__PURE__*/ b('GetAsyncKeyState', 'i32 -> i32')
|
|
335
|
-
/** 取全部 256
|
|
408
|
+
/** 取全部 256 键状态
|
|
409
|
+
* @returns 成功 → 非 0
|
|
336
410
|
* @param args_0 lpKeyState 出参槽,自备 256 字节 buffer */
|
|
337
411
|
export const GetKeyboardState = /*@__PURE__*/ b('GetKeyboardState', '<BYTE>ptr -> i32')
|
|
338
|
-
/** 字符 →
|
|
412
|
+
/** 字符 → 虚拟键+修饰键
|
|
413
|
+
* @returns SHORT(低字节 VK、高位 shift/ctrl/alt 掩码),无 → -1
|
|
339
414
|
* @param args_0 ch 字符码(如 65 = 'A') */
|
|
340
415
|
export const VkKeyScan = /*@__PURE__*/ b('VkKeyScanW', 'u32 -> i32')
|
|
341
416
|
|
|
342
417
|
// ============ 计时器 ============
|
|
343
418
|
|
|
344
|
-
/** 设定时器(hWnd/id 传 NULL/0 = 自动分配 id
|
|
419
|
+
/** 设定时器(hWnd/id 传 NULL/0 = 自动分配 id;lpTimerFunc 传 NULL 用 WM_TIMER)
|
|
420
|
+
* @returns 定时器 ID(自动分配时从返回值读回);失败 → 0
|
|
345
421
|
* @param args_0 hWnd 关联窗口,可 NULL
|
|
346
422
|
* @param args_1 id 定时器 ID(0 = 自动分配)
|
|
347
423
|
* @param args_2 uElapse 间隔毫秒
|
|
348
424
|
* @param args_3 lpTimerFunc 回调指针(closure().ptr),NULL = WM_TIMER 消息 */
|
|
349
425
|
export const SetTimer = /*@__PURE__*/ b('SetTimer', '<HWND>ptr <>ptr u32 <>ptr -> <>ptr')
|
|
350
|
-
/** 杀定时器(id 用 SetTimer
|
|
426
|
+
/** 杀定时器(id 用 SetTimer 返回值)
|
|
427
|
+
* @returns 成功 → 非 0
|
|
351
428
|
* @param args_0 hWnd 关联窗口,可 NULL
|
|
352
429
|
* @param args_1 id 定时器 ID(SetTimer 返回值) */
|
|
353
430
|
export const KillTimer = /*@__PURE__*/ b('KillTimer', '<HWND>ptr <>ptr -> i32')
|
|
354
431
|
|
|
355
432
|
// ============ 剪贴板 ============
|
|
356
433
|
|
|
357
|
-
/**
|
|
434
|
+
/** 打开剪贴板;配对 CloseClipboard
|
|
435
|
+
* @returns 成功 → 非 0
|
|
358
436
|
* @param args_0 hWnd 拥有窗口,可 NULL */
|
|
359
437
|
export const OpenClipboard = /*@__PURE__*/ b('OpenClipboard', '<HWND>ptr -> i32')
|
|
360
|
-
/**
|
|
438
|
+
/** 关闭剪贴板
|
|
439
|
+
* @returns 成功 → 非 0 */
|
|
361
440
|
export const CloseClipboard = /*@__PURE__*/ b('CloseClipboard', ' -> i32')
|
|
362
|
-
/** 清空剪贴板(须先 OpenClipboard
|
|
441
|
+
/** 清空剪贴板(须先 OpenClipboard)
|
|
442
|
+
* @returns 成功 → 非 0 */
|
|
363
443
|
export const EmptyClipboard = /*@__PURE__*/ b('EmptyClipboard', ' -> i32')
|
|
364
|
-
/**
|
|
444
|
+
/** 取剪贴板数据(须先 OpenClipboard + 有数据)
|
|
445
|
+
* @returns 数据句柄;无 → NULL
|
|
365
446
|
* @param args_0 uFormat 剪贴板格式(CF_* 或 RegisterClipboardFormat 返回值) */
|
|
366
447
|
export const GetClipboardData = /*@__PURE__*/ b('GetClipboardData', 'u32 -> <HGLOBAL>ptr')
|
|
367
|
-
/**
|
|
448
|
+
/** 放数据进剪贴板
|
|
449
|
+
* @returns 成功 → 非 0
|
|
368
450
|
* @param args_0 uFormat 剪贴板格式
|
|
369
451
|
* @param args_1 hMem 全局内存句柄(所有权移交系统后勿再用) */
|
|
370
452
|
export const SetClipboardData = /*@__PURE__*/ b('SetClipboardData', 'u32 <HGLOBAL>ptr -> <HGLOBAL>ptr')
|
|
371
|
-
/** 注册自定义剪贴板格式 ID
|
|
453
|
+
/** 注册自定义剪贴板格式 ID
|
|
454
|
+
* @returns 格式 ID;失败 → 0
|
|
372
455
|
* @param args_0 lpszFormat 格式名 string */
|
|
373
456
|
export const RegisterClipboardFormat = /*@__PURE__*/ b('RegisterClipboardFormatW', '<WCHAR>ptr -> u32')
|
|
374
|
-
/**
|
|
457
|
+
/** 剪贴板是否有指定格式数据
|
|
458
|
+
* @returns 有 → 非 0
|
|
375
459
|
* @param args_0 format 剪贴板格式(CF_*) */
|
|
376
460
|
export const IsClipboardFormatAvailable = /*@__PURE__*/ b('IsClipboardFormatAvailable', 'u32 -> i32')
|
|
377
461
|
|
|
378
462
|
// ============ 菜单 ============
|
|
379
463
|
|
|
380
|
-
/**
|
|
464
|
+
/** 取窗口菜单
|
|
465
|
+
* @returns 菜单句柄;无菜单 → NULL
|
|
381
466
|
* @param args_0 hWnd */
|
|
382
467
|
export const GetMenu = /*@__PURE__*/ b('GetMenu', '<HWND>ptr -> <HMENU>ptr')
|
|
383
|
-
/**
|
|
468
|
+
/** 设/清窗口菜单;改后需 DrawMenuBar
|
|
469
|
+
* @returns 成功 → 非 0
|
|
384
470
|
* @param args_0 hWnd
|
|
385
471
|
* @param args_1 hMenu 新菜单,NULL 清除 */
|
|
386
472
|
export const SetMenu = /*@__PURE__*/ b('SetMenu', '<HWND>ptr <HMENU>ptr -> i32')
|
|
387
|
-
/**
|
|
473
|
+
/** 重画菜单栏
|
|
474
|
+
* @returns 成功 → 非 0
|
|
388
475
|
* @param args_0 hWnd */
|
|
389
476
|
export const DrawMenuBar = /*@__PURE__*/ b('DrawMenuBar', '<HWND>ptr -> i32')
|
|
390
|
-
/**
|
|
477
|
+
/** 追加菜单项
|
|
478
|
+
* @returns 成功 → 非 0
|
|
391
479
|
* @param args_0 hMenu 目标菜单
|
|
392
480
|
* @param args_1 uFlags MF_* 标志(MF_STRING/MF_SEPARATOR/MF_POPUP 等)
|
|
393
481
|
* @param args_2 uIDNewItem 命令 ID 或子菜单句柄(混合位)
|
|
394
482
|
* @param args_3 lpNewItem 菜单项文本 string 或 NULL */
|
|
395
483
|
export const AppendMenu = /*@__PURE__*/ b('AppendMenuW', '<HMENU>ptr u32 <>ptr <WCHAR>ptr -> i32')
|
|
396
|
-
/** 销毁菜单(误传 HWND
|
|
484
|
+
/** 销毁菜单(误传 HWND 编译不过)
|
|
485
|
+
* @returns 成功 → 非 0
|
|
397
486
|
* @param args_0 hMenu */
|
|
398
487
|
export const DestroyMenu = /*@__PURE__*/ b('DestroyMenu', '<HMENU>ptr -> i32')
|
|
399
|
-
/**
|
|
488
|
+
/** 设菜单项勾选状态
|
|
489
|
+
* @returns 先前状态(0xFFFFFFFF = 失败)
|
|
400
490
|
* @param args_0 hMenu
|
|
401
491
|
* @param args_1 uIDItem 菜单项 ID 或位置(依 uFlags MF_BYPOSITION)
|
|
402
492
|
* @param args_2 uCheck MF_CHECKED/MF_UNCHECKED 等 */
|
|
403
493
|
export const CheckMenuItem = /*@__PURE__*/ b('CheckMenuItem', '<HMENU>ptr u32 u32 -> u32')
|
|
404
|
-
/**
|
|
494
|
+
/** 启用/禁用/灰化菜单项
|
|
495
|
+
* @returns 先前状态
|
|
405
496
|
* @param args_0 hMenu
|
|
406
497
|
* @param args_1 uIDItem 菜单项 ID 或位置
|
|
407
498
|
* @param args_2 uEnable MF_ENABLED/MF_GRAYED/MF_DISABLED 等 */
|
|
408
499
|
export const EnableMenuItem = /*@__PURE__*/ b('EnableMenuItem', '<HMENU>ptr u32 u32 -> i32')
|
|
409
|
-
/**
|
|
500
|
+
/** 取子菜单(按位置)
|
|
501
|
+
* @returns 子菜单句柄;无 → NULL(出入参同型)
|
|
410
502
|
* @param args_0 hMenu 父菜单
|
|
411
503
|
* @param args_1 nPos 子菜单位置索引 */
|
|
412
504
|
export const GetSubMenu = /*@__PURE__*/ b('GetSubMenu', '<HMENU>ptr i32 -> <HMENU>ptr')
|
|
413
|
-
/**
|
|
505
|
+
/** 弹出跟踪菜单
|
|
506
|
+
* @returns 菜单项命令 ID 或 0
|
|
414
507
|
* @param args_0 hMenu 弹出菜单
|
|
415
508
|
* @param args_1 uFlags TPM_* 标志
|
|
416
509
|
* @param args_2 x 屏幕 x
|
|
@@ -419,24 +512,28 @@ export const GetSubMenu = /*@__PURE__*/ b('GetSubMenu', '<HMENU>ptr i32 -> <HMEN
|
|
|
419
512
|
* @param args_5 prcRect 点击区矩形(DeepPartial RECT / .ptr / NULL)
|
|
420
513
|
* @param args_6 hdc 参考 DC,可 NULL */
|
|
421
514
|
export const TrackPopupMenu = /*@__PURE__*/ b('TrackPopupMenu', '<HMENU>ptr u32 i32 i32 i32 <RECT>ptr <HDC>ptr -> i32', { RECT })
|
|
422
|
-
/**
|
|
515
|
+
/** 创建弹出菜单;配对 DestroyMenu
|
|
516
|
+
* @returns 菜单句柄;失败 → NULL */
|
|
423
517
|
export const CreatePopupMenu = /*@__PURE__*/ b('CreatePopupMenu', ' -> <HMENU>ptr')
|
|
424
518
|
|
|
425
519
|
// ============ 滚动条 ============
|
|
426
520
|
|
|
427
|
-
/**
|
|
521
|
+
/** 设滚动参数
|
|
522
|
+
* @returns 滑块位置
|
|
428
523
|
* @param args_0 hWnd
|
|
429
524
|
* @param args_1 nBar 滚动条(SB_HORZ=0/SB_VERT=1/SB_CTL=2)
|
|
430
525
|
* @param args_2 lpScrollInfo DeepPartial SCROLLINFO(cbSize 必须显式给 SCROLLINFO.size——Win32
|
|
431
526
|
* 结构自描述要求,缺省跳过帮不了;fMask = SIF_* 决定写哪些项)
|
|
432
527
|
* @param args_3 redraw 非 0 立即重画 */
|
|
433
528
|
export const SetScrollInfo = /*@__PURE__*/ b('SetScrollInfo', '<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32', { SCROLLINFO })
|
|
434
|
-
/** 取滚动参数(双向不注册 encoder
|
|
529
|
+
/** 取滚动参数(双向不注册 encoder)
|
|
530
|
+
* @returns 成功 → 非 0
|
|
435
531
|
* @param args_0 hWnd
|
|
436
532
|
* @param args_1 nBar 滚动条(SB_*)
|
|
437
533
|
* @param args_2 lpScrollInfo SCROLLINFO.encode({cbSize, fMask}) 传 .ptr、decode 读回 */
|
|
438
534
|
export const GetScrollInfo = /*@__PURE__*/ b('GetScrollInfo', '<HWND>ptr u32 <SCROLLINFO>ptr -> i32')
|
|
439
|
-
/**
|
|
535
|
+
/** 显示/隐藏滚动条
|
|
536
|
+
* @returns 成功 → 非 0
|
|
440
537
|
* @param args_0 hWnd
|
|
441
538
|
* @param args_1 bar 滚动条(0=HORZ 1=VERT 3=BOTH)
|
|
442
539
|
* @param args_2 show 非 0 显示 */
|
|
@@ -444,7 +541,8 @@ export const ShowScrollBar = /*@__PURE__*/ b('ShowScrollBar', '<HWND>ptr u32 i32
|
|
|
444
541
|
|
|
445
542
|
// ============ 对话框 ============
|
|
446
543
|
|
|
447
|
-
/** 消息框(仅在确实要弹窗时调用;MB_* 常量见 MSDN
|
|
544
|
+
/** 消息框(仅在确实要弹窗时调用;MB_* 常量见 MSDN)
|
|
545
|
+
* @returns 按钮 ID
|
|
448
546
|
* @param args_0 hWnd 父窗口,可 NULL
|
|
449
547
|
* @param args_1 lpText 正文 string
|
|
450
548
|
* @param args_2 lpCaption 标题 string
|
|
@@ -454,7 +552,8 @@ export const MessageBox = /*@__PURE__*/ b('MessageBoxW', '<HWND>ptr <WCHAR>ptr <
|
|
|
454
552
|
// ============ 图像 ============
|
|
455
553
|
|
|
456
554
|
/** 按名加载图像(string 自动编码;uType/fuLoad 用 Win32 真值——与 gui.ImageType 枚举当前值
|
|
457
|
-
*
|
|
555
|
+
* 不同)
|
|
556
|
+
* @returns 图像句柄;失败 → 0
|
|
458
557
|
* @param args_0 hinst 模块句柄,NULL = 系统资源或 .ico 文件
|
|
459
558
|
* @param args_1 name 图像名 string(资源名或文件路径)
|
|
460
559
|
* @param args_2 uType IMAGE_* 真值(BITMAP=0/CURSOR=1/ICON=2)
|
|
@@ -463,6 +562,7 @@ export const MessageBox = /*@__PURE__*/ b('MessageBoxW', '<HWND>ptr <WCHAR>ptr <
|
|
|
463
562
|
* @param args_5 fuLoad LR_* 标志(LR_LOADFROMFILE=0x10/LR_SHARED=0x8000,系统 IDI 需 SHARED) */
|
|
464
563
|
export const LoadImage = /*@__PURE__*/ b('LoadImageW', '<HMODULE>ptr <WCHAR>ptr u32 i32 i32 u32 -> <>ptr')
|
|
465
564
|
/** 按资源 ID 序数加载图像(name 直传 MAKEINTRESOURCE 整数);其余同 LoadImage
|
|
565
|
+
* @returns 图像句柄;失败 → 0
|
|
466
566
|
* @param args_0 hinst 模块句柄
|
|
467
567
|
* @param args_1 name 资源 ID 序数(如 IDI_APPLICATION=32512)
|
|
468
568
|
* @param args_2 uType IMAGE_* 真值
|
|
@@ -474,28 +574,33 @@ export const LoadImageOrdinal = /*@__PURE__*/ b('LoadImageW', '<HMODULE>ptr <>pt
|
|
|
474
574
|
// ============ 杂项高频 ============
|
|
475
575
|
|
|
476
576
|
/** 取系统度量
|
|
577
|
+
* @returns 度量值
|
|
477
578
|
* @param args_0 nIndex 度量索引(SM_CXSCREEN=0/SM_CYSCREEN=1 等 SM_*) */
|
|
478
579
|
export const GetSystemMetrics = /*@__PURE__*/ b('GetSystemMetrics', 'i32 -> i32')
|
|
479
|
-
/**
|
|
580
|
+
/** 读/写系统参数
|
|
581
|
+
* @returns 成功 → 非 0
|
|
480
582
|
* @param args_0 uiAction SPI_* 操作码
|
|
481
583
|
* @param args_1 uiParam 参数(随操作而定,常为缓冲大小或 0)
|
|
482
584
|
* @param args_2 pvParam 数据 buffer(如 SPI_GETNONCLIENTMETRICS 的缓冲)
|
|
483
585
|
* @param args_3 fWinIni SPIF_* 写入标志(0 = 仅当前会话) */
|
|
484
586
|
export const SystemParametersInfo = /*@__PURE__*/ b('SystemParametersInfoW', 'u32 u32 <BYTE>ptr u32 -> i32')
|
|
485
|
-
/**
|
|
587
|
+
/** 枚举顶层窗口
|
|
588
|
+
* @returns 全枚举完 → 非 0
|
|
486
589
|
* @param args_0 lpEnumFunc 回调指针(closure(stdcall)().ptr),回调返 0 停止
|
|
487
590
|
* @param args_1 lParam 透传给回调的附加值(常传 0) */
|
|
488
591
|
export const EnumWindows = /*@__PURE__*/ b('EnumWindows', '<>ptr <>ptr -> i32')
|
|
489
592
|
|
|
490
593
|
// ============ 显示模式(分辨率/刷新率)============
|
|
491
594
|
|
|
492
|
-
/** 枚举显示模式(iDevNum 从 0
|
|
595
|
+
/** 枚举显示模式(iDevNum 从 0 起逐个枚举)
|
|
596
|
+
* @returns 找到 → 非 0;枚举尽 → 0
|
|
493
597
|
* @param args_0 lpszDeviceName 设备名,NULL = 主显示设备
|
|
494
598
|
* @param args_1 iDevNum 模式序号(0 起递增;-1 = 当前设置)
|
|
495
599
|
* @param args_2 lpDevMode DEVMODEW 出参缓冲(双向不注册 encoder,只收 def 的 .ptr;
|
|
496
600
|
* encode({ dmSize: DEVMODEW.size }).ptr 传入、decode 读回) */
|
|
497
601
|
export const EnumDisplaySettings = /*@__PURE__*/ b('EnumDisplaySettingsW', '<WCHAR>ptr u32 <DEVMODEW>ptr -> i32')
|
|
498
|
-
/**
|
|
602
|
+
/** 改显示模式
|
|
603
|
+
* @returns DISP_CHANGE_*(0 = DISP_CHANGE_SUCCESSFUL)
|
|
499
604
|
* @param args_0 lpDevMode DEVMODEW 缓冲(须先枚举/预置 dmSize+dmFields,
|
|
500
605
|
* DM_PELSWIDTH|DM_PELSHEIGHT 等决定生效项;收 encode(...).ptr)
|
|
501
606
|
* @param args_1 dwFlags CDS_* 标志(0 = 仅当前会话、CDS_UPDATEREGISTRY = 写注册表持久化) */
|