quickwin 2.2.0 → 2.3.0
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 +7 -7
- package/README.md +7 -7
- package/constants.ts +1063 -0
- package/enum_map.d.ts +129 -0
- package/examples/PdfCanvas.js +2 -2
- package/examples/PdfCanvas.tsx +3 -2
- package/examples/{execd.js → execd/main.js} +563 -122
- package/examples/execd/tray.js +192 -0
- package/examples/{execd_worker.js → execd/worker.js} +7 -7
- package/examples/pdf_preview2.js +46 -46
- package/examples/pdf_preview2.ts +55 -54
- package/examples/pdf_viewer.js +34 -19
- package/examples/pdf_viewer.tsx +6 -5
- package/examples/test_gallery.js +35 -20
- package/examples/test_gallery.tsx +9 -8
- package/examples/test_react_lazy.js +34 -19
- package/examples/test_react_lazy.tsx +7 -6
- package/examples/test_react_listbox.js +34 -19
- package/examples/test_react_listbox.tsx +8 -7
- package/examples/test_root_window.js +34 -19
- package/examples/test_root_window.tsx +5 -5
- package/examples/test_tab.js +34 -19
- package/examples/test_tab.tsx +7 -6
- package/examples/tray_demo.js +8 -8
- package/examples/tray_demo.tsx +9 -8
- package/lib/dumpRects.js +2 -2
- package/lib/dumpRects.ts +3 -2
- package/lib/fetch.js +15 -15
- package/lib/fetch.ts +16 -15
- package/lib/ffi/bind.js +3 -3
- package/lib/ffi/bind.ts +3 -3
- package/lib/http-server.js +4 -4
- package/lib/http-server.ts +5 -4
- package/lib/react-qw/components/Button.js +2 -2
- package/lib/react-qw/components/CheckBox.js +4 -4
- package/lib/react-qw/components/ComboBox.js +10 -10
- package/lib/react-qw/components/DateTimePicker.js +12 -12
- package/lib/react-qw/components/Input.js +7 -7
- package/lib/react-qw/components/Link.js +4 -4
- package/lib/react-qw/components/ListBox.js +12 -12
- package/lib/react-qw/components/ListView.js +35 -35
- package/lib/react-qw/components/PathPicker.js +3 -3
- package/lib/react-qw/components/ProgressBar.js +4 -4
- package/lib/react-qw/components/RadioButton.js +4 -4
- package/lib/react-qw/components/ScrollView.js +28 -28
- package/lib/react-qw/components/Slider.js +11 -11
- package/lib/react-qw/components/Tab.js +10 -10
- package/lib/react-qw/components/Tooltip.js +8 -8
- package/lib/react-qw/components/TreeView.js +20 -20
- package/lib/react-qw/index.js +5 -5
- package/lib/react-qw/index.ts +6 -5
- package/lib/react-qw/props.js +4 -4
- package/lib/react-qw/props.ts +5 -4
- package/lib/react-qw/reconciler.js +10 -10
- package/lib/react-qw/reconciler.ts +11 -10
- package/lib/text-measure.js +3 -3
- package/lib/text-measure.ts +4 -3
- package/lib/websocket.js +17 -17
- package/lib/websocket.ts +18 -17
- package/lib/windows/advapi32.js +7 -7
- package/lib/windows/advapi32.ts +7 -7
- package/lib/windows/gdi32.js +16 -16
- package/lib/windows/gdi32.ts +16 -16
- package/lib/windows/kernel32.js +41 -2
- package/lib/windows/kernel32.ts +45 -2
- package/lib/windows/shell32.js +24 -3
- package/lib/windows/shell32.ts +27 -4
- package/lib/windows/structs.js +54 -0
- package/lib/windows/structs.ts +63 -1
- package/lib/windows/user32.js +18 -6
- package/lib/windows/user32.ts +18 -6
- package/lib/windows/winspool.js +3 -3
- package/lib/windows/winspool.ts +3 -3
- package/package.json +4 -3
- package/quickwin.d.ts +32 -10
- 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/test_ffi_bind.js +7 -7
- package/test/test_ffi_bind.ts +8 -8
- package/test/test_ffi_struct.js +2 -2
- package/test/test_ffi_struct.ts +3 -3
- package/test/test_ffi_windows.js +1 -1
- package/test/test_ffi_windows.ts +1 -1
- package/test/test_files.js +7 -7
- package/test/test_files.ts +8 -8
- package/test/test_gdi_draw.js +51 -51
- package/test/test_gdi_draw.ts +57 -57
- package/test/test_http_server.js +3 -3
- package/test/test_http_server.ts +4 -3
- package/test/test_ipv6.js +3 -3
- package/test/test_ipv6.ts +4 -3
- package/test/test_net_event.js +3 -3
- package/test/test_net_event.ts +4 -3
- package/test/test_printer.js +4 -4
- package/test/test_printer.ts +5 -5
- package/test/test_react_complex.js +36 -21
- package/test/test_react_counter.js +34 -19
- package/test/test_react_flex.js +36 -21
- package/test/test_react_hidden.js +34 -19
- package/test/test_react_listview_link.js +35 -20
- package/test/test_react_notify.js +52 -37
- package/test/test_react_render.js +34 -19
- package/test/test_registry.js +6 -6
- package/test/test_registry.ts +8 -8
- package/test/test_wolfssl_read.js +8 -8
- package/test/test_wolfssl_read.ts +9 -8
- package/examples/execd.tsx +0 -798
- package/examples/execd_worker.ts +0 -127
- package/quickwin_const.d.ts +0 -1063
|
@@ -6,19 +6,20 @@ import {
|
|
|
6
6
|
ListView, type Column, ListBox, ScrollView, RadioButton, Slider,
|
|
7
7
|
TreeView, type TreeNode, DateTimePicker, Link, Tooltip, PathPicker,
|
|
8
8
|
} from '../lib/react-qw/index.js'
|
|
9
|
+
import { WindowStyle, WmMsg } from '../constants'
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
gui.RegisterClass('Gallery', (hwnd, msg, wParam, lParam) => {
|
|
12
13
|
if (!hwnd) return gui.DefWindowProc(hwnd, msg, wParam, lParam)
|
|
13
|
-
if (msg ===
|
|
14
|
+
if (msg === WmMsg.DESTROY) {
|
|
14
15
|
gui.PostQuitMessage(0)
|
|
15
16
|
return 0
|
|
16
17
|
}
|
|
17
18
|
return gui.DefWindowProc(hwnd, msg, wParam, lParam)
|
|
18
19
|
})
|
|
19
20
|
|
|
20
|
-
const VISIBLE =
|
|
21
|
-
const CLIPCHILDREN =
|
|
21
|
+
const VISIBLE = WindowStyle.VISIBLE
|
|
22
|
+
const CLIPCHILDREN = WindowStyle.CLIPCHILDREN
|
|
22
23
|
|
|
23
24
|
interface Fruit {
|
|
24
25
|
name: string
|
|
@@ -85,7 +86,7 @@ function App({ svW, svH }: { svW: number; svH: number }) {
|
|
|
85
86
|
|
|
86
87
|
return (
|
|
87
88
|
<ScrollView style={{width:svW, height:svH}} contentHeight={1600}>
|
|
88
|
-
<w type="STATIC" ws={VISIBLE | CLIPCHILDREN |
|
|
89
|
+
<w type="STATIC" ws={VISIBLE | CLIPCHILDREN | WindowStyle.BORDER} style={{flexDirection:'column', gap:8, alignSelf:'stretch', flexGrow:1, padding:8}}>
|
|
89
90
|
{/* ===== 三列上半区 ===== */}
|
|
90
91
|
<w type="STATIC" ws={VISIBLE} style={{flexDirection:'row', gap:10, height:345}}>
|
|
91
92
|
|
|
@@ -160,7 +161,7 @@ function App({ svW, svH }: { svW: number; svH: number }) {
|
|
|
160
161
|
|
|
161
162
|
{/* ===== Auto-Size ===== */}
|
|
162
163
|
<w type="STATIC" ws={VISIBLE} text="Auto-Size" style={{height:24}} />
|
|
163
|
-
<w type="STATIC" ws={VISIBLE | CLIPCHILDREN |
|
|
164
|
+
<w type="STATIC" ws={VISIBLE | CLIPCHILDREN | WindowStyle.BORDER} style={{flexDirection:'column', gap:6, alignSelf:'stretch', flexGrow:1}}>
|
|
164
165
|
<w type="STATIC" ws={VISIBLE} text="Buttons (auto width)" style={{height:24}} />
|
|
165
166
|
<w type="STATIC" ws={VISIBLE} style={{flexDirection:'row', gap:8, alignItems:'stretch', height:30}}>
|
|
166
167
|
<Button style={{width:'auto', height:30}}>OK</Button>
|
|
@@ -169,8 +170,8 @@ function App({ svW, svH }: { svW: number; svH: number }) {
|
|
|
169
170
|
</w>
|
|
170
171
|
<w type="STATIC" ws={VISIBLE} text="Statics (auto width)" style={{height:24}} />
|
|
171
172
|
<w type="STATIC" ws={VISIBLE} style={{flexDirection:'row', gap:8, alignItems:'stretch', height:24}}>
|
|
172
|
-
<w type="STATIC" ws={VISIBLE |
|
|
173
|
-
<w type="STATIC" ws={VISIBLE |
|
|
173
|
+
<w type="STATIC" ws={VISIBLE | WindowStyle.BORDER} text="Short" style={{width:'auto', height:24}} />
|
|
174
|
+
<w type="STATIC" ws={VISIBLE | WindowStyle.BORDER} text="A much longer label" style={{width:'auto', height:24}} />
|
|
174
175
|
</w>
|
|
175
176
|
<w type="STATIC" ws={VISIBLE} text="Mixed auto + fixed" style={{height:24}} />
|
|
176
177
|
<w type="STATIC" ws={VISIBLE} style={{flexDirection:'row', gap:8, alignItems:'stretch', height:30}}>
|
|
@@ -269,7 +270,7 @@ function App({ svW, svH }: { svW: number; svH: number }) {
|
|
|
269
270
|
|
|
270
271
|
const hwnd = gui.CreateWindow(
|
|
271
272
|
'Gallery', 'Component Gallery',
|
|
272
|
-
|
|
273
|
+
WindowStyle.OVERLAPPEDWINDOW,
|
|
273
274
|
100, 100, 1400, 1200, null, null
|
|
274
275
|
)
|
|
275
276
|
|
|
@@ -16561,6 +16561,14 @@ var LVCOLUMNW_DECL = {
|
|
|
16561
16561
|
cxIdeal: "i32"
|
|
16562
16562
|
};
|
|
16563
16563
|
var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
|
|
16564
|
+
var NOTIFYICONIDENTIFIER_DECL = {
|
|
16565
|
+
"#": "struct",
|
|
16566
|
+
cbSize: "u32",
|
|
16567
|
+
hWnd: "<HWND>ptr",
|
|
16568
|
+
uID: "u32",
|
|
16569
|
+
guidItem: "u32[4]"
|
|
16570
|
+
};
|
|
16571
|
+
var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
|
|
16564
16572
|
|
|
16565
16573
|
// _build/lib/windows/user32.js
|
|
16566
16574
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
@@ -16626,14 +16634,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16626
16634
|
gui.ShowWindow(
|
|
16627
16635
|
hwnd2,
|
|
16628
16636
|
newProps.hidden ? 0 : 5
|
|
16629
|
-
/*
|
|
16637
|
+
/* ShowWindowCmd.SHOW */
|
|
16630
16638
|
);
|
|
16631
16639
|
}
|
|
16632
16640
|
if ("visible" in newProps) {
|
|
16633
16641
|
gui.ShowWindow(
|
|
16634
16642
|
hwnd2,
|
|
16635
16643
|
newProps.visible ? 5 : 0
|
|
16636
|
-
/*
|
|
16644
|
+
/* ShowWindowCmd.HIDE */
|
|
16637
16645
|
);
|
|
16638
16646
|
}
|
|
16639
16647
|
}
|
|
@@ -16729,7 +16737,7 @@ function measureText(hdc, text, maxWidth) {
|
|
|
16729
16737
|
-1,
|
|
16730
16738
|
r.ptr,
|
|
16731
16739
|
1024
|
|
16732
|
-
/*
|
|
16740
|
+
/* DrawTextFlag.CALCRECT */
|
|
16733
16741
|
);
|
|
16734
16742
|
const { right, bottom } = RECT.decode(r);
|
|
16735
16743
|
return { width: right, height: bottom };
|
|
@@ -16777,7 +16785,7 @@ function setupWindowProc(instance, hwnd2) {
|
|
|
16777
16785
|
const oldProc = GetWindowLongPtr(
|
|
16778
16786
|
hwnd2,
|
|
16779
16787
|
-4
|
|
16780
|
-
/*
|
|
16788
|
+
/* Gwlp.WNDPROC */
|
|
16781
16789
|
);
|
|
16782
16790
|
instancesByHwnd.set(hwnd2, instance);
|
|
16783
16791
|
gui3.SetWindowProc(hwnd2, (hwnd3, msg, wParam, lParam) => {
|
|
@@ -16865,7 +16873,7 @@ function runFlexLayout(inst) {
|
|
|
16865
16873
|
r.width * scaleFactor,
|
|
16866
16874
|
r.height * scaleFactor,
|
|
16867
16875
|
64
|
|
16868
|
-
/*
|
|
16876
|
+
/* SetWindowPosFlag.SWP_SHOWWINDOW */
|
|
16869
16877
|
);
|
|
16870
16878
|
InvalidateRect(child.hwnd, NULL, 1);
|
|
16871
16879
|
child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
|
|
@@ -17021,7 +17029,7 @@ var hostConfig = {
|
|
|
17021
17029
|
gui3.ShowWindow(
|
|
17022
17030
|
instance.hwnd,
|
|
17023
17031
|
0
|
|
17024
|
-
/*
|
|
17032
|
+
/* ShowWindowCmd.HIDE */
|
|
17025
17033
|
);
|
|
17026
17034
|
},
|
|
17027
17035
|
hideTextInstance(instance) {
|
|
@@ -17029,7 +17037,7 @@ var hostConfig = {
|
|
|
17029
17037
|
gui3.ShowWindow(
|
|
17030
17038
|
instance.hwnd,
|
|
17031
17039
|
0
|
|
17032
|
-
/*
|
|
17040
|
+
/* ShowWindowCmd.HIDE */
|
|
17033
17041
|
);
|
|
17034
17042
|
},
|
|
17035
17043
|
unhideInstance(instance, _props) {
|
|
@@ -17037,7 +17045,7 @@ var hostConfig = {
|
|
|
17037
17045
|
gui3.ShowWindow(
|
|
17038
17046
|
instance.hwnd,
|
|
17039
17047
|
5
|
|
17040
|
-
/*
|
|
17048
|
+
/* ShowWindowCmd.SHOW */
|
|
17041
17049
|
);
|
|
17042
17050
|
},
|
|
17043
17051
|
unhideTextInstance(instance, _text) {
|
|
@@ -17045,7 +17053,7 @@ var hostConfig = {
|
|
|
17045
17053
|
gui3.ShowWindow(
|
|
17046
17054
|
instance.hwnd,
|
|
17047
17055
|
5
|
|
17048
|
-
/*
|
|
17056
|
+
/* ShowWindowCmd.SHOW */
|
|
17049
17057
|
);
|
|
17050
17058
|
},
|
|
17051
17059
|
shouldSetTextContent(_type, props) {
|
|
@@ -17473,7 +17481,7 @@ function getCellFont(hwnd2, style) {
|
|
|
17473
17481
|
...base,
|
|
17474
17482
|
...style.bold ? {
|
|
17475
17483
|
lfWeight: 700
|
|
17476
|
-
/*
|
|
17484
|
+
/* FontWeight.BOLD */
|
|
17477
17485
|
} : {},
|
|
17478
17486
|
...style.italic ? { lfItalic: 1 } : {},
|
|
17479
17487
|
...style.underline ? { lfUnderline: 1 } : {}
|
|
@@ -17595,7 +17603,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17595
17603
|
4150,
|
|
17596
17604
|
0,
|
|
17597
17605
|
32 | 1 | 65536
|
|
17598
|
-
/*
|
|
17606
|
+
/* LvExStyle.DOUBLEBUFFER */
|
|
17599
17607
|
);
|
|
17600
17608
|
const n = columns.length;
|
|
17601
17609
|
for (let j = 0; j < n; j++) {
|
|
@@ -17640,7 +17648,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17640
17648
|
4126,
|
|
17641
17649
|
j,
|
|
17642
17650
|
-2
|
|
17643
|
-
/*
|
|
17651
|
+
/* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
|
|
17644
17652
|
);
|
|
17645
17653
|
}
|
|
17646
17654
|
}
|
|
@@ -17782,7 +17790,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17782
17790
|
natW,
|
|
17783
17791
|
natH,
|
|
17784
17792
|
4
|
|
17785
|
-
/*
|
|
17793
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17786
17794
|
);
|
|
17787
17795
|
forceFlexLayout(content);
|
|
17788
17796
|
if (natW > svW) {
|
|
@@ -17821,7 +17829,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17821
17829
|
0,
|
|
17822
17830
|
0,
|
|
17823
17831
|
1 | 4
|
|
17824
|
-
/*
|
|
17832
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17825
17833
|
);
|
|
17826
17834
|
gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
|
|
17827
17835
|
}
|
|
@@ -17887,7 +17895,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17887
17895
|
handleScroll(
|
|
17888
17896
|
e,
|
|
17889
17897
|
1
|
|
17890
|
-
/*
|
|
17898
|
+
/* ScrollBar.VERT */
|
|
17891
17899
|
);
|
|
17892
17900
|
return 0;
|
|
17893
17901
|
}
|
|
@@ -17895,7 +17903,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17895
17903
|
handleScroll(
|
|
17896
17904
|
e,
|
|
17897
17905
|
0
|
|
17898
|
-
/*
|
|
17906
|
+
/* ScrollBar.HORZ */
|
|
17899
17907
|
);
|
|
17900
17908
|
return 0;
|
|
17901
17909
|
}
|
|
@@ -18059,7 +18067,7 @@ function deleteAllItems(hTree) {
|
|
|
18059
18067
|
4353,
|
|
18060
18068
|
1,
|
|
18061
18069
|
-65536
|
|
18062
|
-
/*
|
|
18070
|
+
/* TvInsertAfter.ROOT */
|
|
18063
18071
|
);
|
|
18064
18072
|
}
|
|
18065
18073
|
var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
|
|
@@ -18091,7 +18099,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18091
18099
|
4396,
|
|
18092
18100
|
0,
|
|
18093
18101
|
4
|
|
18094
|
-
/*
|
|
18102
|
+
/* TvExStyle.DOUBLEBUFFER */
|
|
18095
18103
|
);
|
|
18096
18104
|
}, []);
|
|
18097
18105
|
(0, import_react16.useEffect)(() => {
|
|
@@ -18133,9 +18141,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
|
18133
18141
|
var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18134
18142
|
|
|
18135
18143
|
// _build/lib/windows/shell32.js
|
|
18136
|
-
var b4 = (name, sig) => bind("shell32.dll", name, sig);
|
|
18144
|
+
var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18137
18145
|
var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18138
18146
|
var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18147
|
+
var Shell_NotifyIconGetRect = (() => {
|
|
18148
|
+
try {
|
|
18149
|
+
return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18150
|
+
} catch {
|
|
18151
|
+
return null;
|
|
18152
|
+
}
|
|
18153
|
+
})();
|
|
18139
18154
|
|
|
18140
18155
|
// _build/lib/windows/ole32.js
|
|
18141
18156
|
var b5 = (name, sig) => bind("ole32.dll", name, sig);
|
|
@@ -2,10 +2,11 @@ import '../lib/polyfill.js'
|
|
|
2
2
|
import * as gui from 'gui'
|
|
3
3
|
import { Suspense, lazy, useState } from 'react'
|
|
4
4
|
import { render } from '../lib/react-qw/index.js'
|
|
5
|
+
import { WindowStyle, WmMsg } from '../constants'
|
|
5
6
|
|
|
6
7
|
gui.RegisterClass('LazyTest', (hwnd, msg, wParam, lParam) => {
|
|
7
8
|
if (!hwnd) return gui.DefWindowProc(hwnd, msg, wParam, lParam)
|
|
8
|
-
if (msg ===
|
|
9
|
+
if (msg === WmMsg.DESTROY) {
|
|
9
10
|
gui.PostQuitMessage(0)
|
|
10
11
|
return 0
|
|
11
12
|
}
|
|
@@ -15,7 +16,7 @@ gui.RegisterClass('LazyTest', (hwnd, msg, wParam, lParam) => {
|
|
|
15
16
|
function SimpleComponent() {
|
|
16
17
|
return (
|
|
17
18
|
<w type="STATIC" text="Hello from lazy component!"
|
|
18
|
-
ws={
|
|
19
|
+
ws={WindowStyle.CHILD | WindowStyle.VISIBLE}
|
|
19
20
|
style={{width:300, height:30}} />
|
|
20
21
|
)
|
|
21
22
|
}
|
|
@@ -28,11 +29,11 @@ const LazySimple = lazy(async () => {
|
|
|
28
29
|
function App() {
|
|
29
30
|
const [show, setShow] = useState(false)
|
|
30
31
|
return (
|
|
31
|
-
<w type="STATIC" ws={
|
|
32
|
+
<w type="STATIC" ws={WindowStyle.VISIBLE}
|
|
32
33
|
style={{flexDirection:'column', padding:10, gap:10, flexGrow:1}}>
|
|
33
34
|
<w type="BUTTON"
|
|
34
35
|
text={show ? 'Hide Lazy' : 'Show Lazy'}
|
|
35
|
-
ws={
|
|
36
|
+
ws={WindowStyle.CHILD | WindowStyle.VISIBLE}
|
|
36
37
|
style={{width:150, height:30}}
|
|
37
38
|
onEvent={(e: { msg: number; wParam: number; lParam: number }) => {
|
|
38
39
|
if (e.msg === 0x0202) setShow(!show)
|
|
@@ -41,7 +42,7 @@ function App() {
|
|
|
41
42
|
{show && (
|
|
42
43
|
<Suspense fallback={
|
|
43
44
|
<w type="STATIC" text="Loading..."
|
|
44
|
-
ws={
|
|
45
|
+
ws={WindowStyle.CHILD | WindowStyle.VISIBLE}
|
|
45
46
|
style={{width:200, height:30}} />
|
|
46
47
|
}>
|
|
47
48
|
<LazySimple />
|
|
@@ -53,7 +54,7 @@ function App() {
|
|
|
53
54
|
|
|
54
55
|
const hwnd = gui.CreateWindow(
|
|
55
56
|
'LazyTest', 'React.lazy Test',
|
|
56
|
-
|
|
57
|
+
WindowStyle.OVERLAPPEDWINDOW,
|
|
57
58
|
200, 200, 400, 300, null, null
|
|
58
59
|
)
|
|
59
60
|
|
|
@@ -16561,6 +16561,14 @@ var LVCOLUMNW_DECL = {
|
|
|
16561
16561
|
cxIdeal: "i32"
|
|
16562
16562
|
};
|
|
16563
16563
|
var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
|
|
16564
|
+
var NOTIFYICONIDENTIFIER_DECL = {
|
|
16565
|
+
"#": "struct",
|
|
16566
|
+
cbSize: "u32",
|
|
16567
|
+
hWnd: "<HWND>ptr",
|
|
16568
|
+
uID: "u32",
|
|
16569
|
+
guidItem: "u32[4]"
|
|
16570
|
+
};
|
|
16571
|
+
var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
|
|
16564
16572
|
|
|
16565
16573
|
// _build/lib/windows/user32.js
|
|
16566
16574
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
@@ -16626,14 +16634,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16626
16634
|
gui.ShowWindow(
|
|
16627
16635
|
hwnd2,
|
|
16628
16636
|
newProps.hidden ? 0 : 5
|
|
16629
|
-
/*
|
|
16637
|
+
/* ShowWindowCmd.SHOW */
|
|
16630
16638
|
);
|
|
16631
16639
|
}
|
|
16632
16640
|
if ("visible" in newProps) {
|
|
16633
16641
|
gui.ShowWindow(
|
|
16634
16642
|
hwnd2,
|
|
16635
16643
|
newProps.visible ? 5 : 0
|
|
16636
|
-
/*
|
|
16644
|
+
/* ShowWindowCmd.HIDE */
|
|
16637
16645
|
);
|
|
16638
16646
|
}
|
|
16639
16647
|
}
|
|
@@ -16729,7 +16737,7 @@ function measureText(hdc, text, maxWidth) {
|
|
|
16729
16737
|
-1,
|
|
16730
16738
|
r.ptr,
|
|
16731
16739
|
1024
|
|
16732
|
-
/*
|
|
16740
|
+
/* DrawTextFlag.CALCRECT */
|
|
16733
16741
|
);
|
|
16734
16742
|
const { right, bottom } = RECT.decode(r);
|
|
16735
16743
|
return { width: right, height: bottom };
|
|
@@ -16777,7 +16785,7 @@ function setupWindowProc(instance, hwnd2) {
|
|
|
16777
16785
|
const oldProc = GetWindowLongPtr(
|
|
16778
16786
|
hwnd2,
|
|
16779
16787
|
-4
|
|
16780
|
-
/*
|
|
16788
|
+
/* Gwlp.WNDPROC */
|
|
16781
16789
|
);
|
|
16782
16790
|
instancesByHwnd.set(hwnd2, instance);
|
|
16783
16791
|
gui3.SetWindowProc(hwnd2, (hwnd3, msg, wParam, lParam) => {
|
|
@@ -16865,7 +16873,7 @@ function runFlexLayout(inst) {
|
|
|
16865
16873
|
r.width * scaleFactor,
|
|
16866
16874
|
r.height * scaleFactor,
|
|
16867
16875
|
64
|
|
16868
|
-
/*
|
|
16876
|
+
/* SetWindowPosFlag.SWP_SHOWWINDOW */
|
|
16869
16877
|
);
|
|
16870
16878
|
InvalidateRect(child.hwnd, NULL, 1);
|
|
16871
16879
|
child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
|
|
@@ -17021,7 +17029,7 @@ var hostConfig = {
|
|
|
17021
17029
|
gui3.ShowWindow(
|
|
17022
17030
|
instance.hwnd,
|
|
17023
17031
|
0
|
|
17024
|
-
/*
|
|
17032
|
+
/* ShowWindowCmd.HIDE */
|
|
17025
17033
|
);
|
|
17026
17034
|
},
|
|
17027
17035
|
hideTextInstance(instance) {
|
|
@@ -17029,7 +17037,7 @@ var hostConfig = {
|
|
|
17029
17037
|
gui3.ShowWindow(
|
|
17030
17038
|
instance.hwnd,
|
|
17031
17039
|
0
|
|
17032
|
-
/*
|
|
17040
|
+
/* ShowWindowCmd.HIDE */
|
|
17033
17041
|
);
|
|
17034
17042
|
},
|
|
17035
17043
|
unhideInstance(instance, _props) {
|
|
@@ -17037,7 +17045,7 @@ var hostConfig = {
|
|
|
17037
17045
|
gui3.ShowWindow(
|
|
17038
17046
|
instance.hwnd,
|
|
17039
17047
|
5
|
|
17040
|
-
/*
|
|
17048
|
+
/* ShowWindowCmd.SHOW */
|
|
17041
17049
|
);
|
|
17042
17050
|
},
|
|
17043
17051
|
unhideTextInstance(instance, _text) {
|
|
@@ -17045,7 +17053,7 @@ var hostConfig = {
|
|
|
17045
17053
|
gui3.ShowWindow(
|
|
17046
17054
|
instance.hwnd,
|
|
17047
17055
|
5
|
|
17048
|
-
/*
|
|
17056
|
+
/* ShowWindowCmd.SHOW */
|
|
17049
17057
|
);
|
|
17050
17058
|
},
|
|
17051
17059
|
shouldSetTextContent(_type, props) {
|
|
@@ -17473,7 +17481,7 @@ function getCellFont(hwnd2, style) {
|
|
|
17473
17481
|
...base,
|
|
17474
17482
|
...style.bold ? {
|
|
17475
17483
|
lfWeight: 700
|
|
17476
|
-
/*
|
|
17484
|
+
/* FontWeight.BOLD */
|
|
17477
17485
|
} : {},
|
|
17478
17486
|
...style.italic ? { lfItalic: 1 } : {},
|
|
17479
17487
|
...style.underline ? { lfUnderline: 1 } : {}
|
|
@@ -17595,7 +17603,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17595
17603
|
4150,
|
|
17596
17604
|
0,
|
|
17597
17605
|
32 | 1 | 65536
|
|
17598
|
-
/*
|
|
17606
|
+
/* LvExStyle.DOUBLEBUFFER */
|
|
17599
17607
|
);
|
|
17600
17608
|
const n = columns.length;
|
|
17601
17609
|
for (let j = 0; j < n; j++) {
|
|
@@ -17640,7 +17648,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
|
|
|
17640
17648
|
4126,
|
|
17641
17649
|
j,
|
|
17642
17650
|
-2
|
|
17643
|
-
/*
|
|
17651
|
+
/* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
|
|
17644
17652
|
);
|
|
17645
17653
|
}
|
|
17646
17654
|
}
|
|
@@ -17782,7 +17790,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17782
17790
|
natW,
|
|
17783
17791
|
natH,
|
|
17784
17792
|
4
|
|
17785
|
-
/*
|
|
17793
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17786
17794
|
);
|
|
17787
17795
|
forceFlexLayout(content);
|
|
17788
17796
|
if (natW > svW) {
|
|
@@ -17821,7 +17829,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17821
17829
|
0,
|
|
17822
17830
|
0,
|
|
17823
17831
|
1 | 4
|
|
17824
|
-
/*
|
|
17832
|
+
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17825
17833
|
);
|
|
17826
17834
|
gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
|
|
17827
17835
|
}
|
|
@@ -17887,7 +17895,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17887
17895
|
handleScroll(
|
|
17888
17896
|
e,
|
|
17889
17897
|
1
|
|
17890
|
-
/*
|
|
17898
|
+
/* ScrollBar.VERT */
|
|
17891
17899
|
);
|
|
17892
17900
|
return 0;
|
|
17893
17901
|
}
|
|
@@ -17895,7 +17903,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17895
17903
|
handleScroll(
|
|
17896
17904
|
e,
|
|
17897
17905
|
0
|
|
17898
|
-
/*
|
|
17906
|
+
/* ScrollBar.HORZ */
|
|
17899
17907
|
);
|
|
17900
17908
|
return 0;
|
|
17901
17909
|
}
|
|
@@ -18059,7 +18067,7 @@ function deleteAllItems(hTree) {
|
|
|
18059
18067
|
4353,
|
|
18060
18068
|
1,
|
|
18061
18069
|
-65536
|
|
18062
|
-
/*
|
|
18070
|
+
/* TvInsertAfter.ROOT */
|
|
18063
18071
|
);
|
|
18064
18072
|
}
|
|
18065
18073
|
var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
|
|
@@ -18091,7 +18099,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18091
18099
|
4396,
|
|
18092
18100
|
0,
|
|
18093
18101
|
4
|
|
18094
|
-
/*
|
|
18102
|
+
/* TvExStyle.DOUBLEBUFFER */
|
|
18095
18103
|
);
|
|
18096
18104
|
}, []);
|
|
18097
18105
|
(0, import_react16.useEffect)(() => {
|
|
@@ -18133,9 +18141,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
|
18133
18141
|
var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18134
18142
|
|
|
18135
18143
|
// _build/lib/windows/shell32.js
|
|
18136
|
-
var b4 = (name, sig) => bind("shell32.dll", name, sig);
|
|
18144
|
+
var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18137
18145
|
var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18138
18146
|
var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18147
|
+
var Shell_NotifyIconGetRect = (() => {
|
|
18148
|
+
try {
|
|
18149
|
+
return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18150
|
+
} catch {
|
|
18151
|
+
return null;
|
|
18152
|
+
}
|
|
18153
|
+
})();
|
|
18139
18154
|
|
|
18140
18155
|
// _build/lib/windows/ole32.js
|
|
18141
18156
|
var b5 = (name, sig) => bind("ole32.dll", name, sig);
|
|
@@ -2,6 +2,7 @@ import '../lib/polyfill.js'
|
|
|
2
2
|
import * as gui from 'gui'
|
|
3
3
|
import { useState } from 'react'
|
|
4
4
|
import { render, ListBox } from '../lib/react-qw/index.js'
|
|
5
|
+
import { WindowStyle, WmMsg } from '../constants'
|
|
5
6
|
|
|
6
7
|
let itemCounter = 10
|
|
7
8
|
|
|
@@ -17,21 +18,21 @@ function App() {
|
|
|
17
18
|
return (
|
|
18
19
|
<w
|
|
19
20
|
type="STATIC"
|
|
20
|
-
ws={
|
|
21
|
+
ws={WindowStyle.VISIBLE}
|
|
21
22
|
style={{ width: 400, height: 500, flexDirection: 'column', alignItems: 'flex-start' }}
|
|
22
23
|
>
|
|
23
24
|
<w
|
|
24
25
|
type="STATIC"
|
|
25
|
-
ws={
|
|
26
|
+
ws={WindowStyle.VISIBLE}
|
|
26
27
|
style={{ flexDirection: 'row', width: 400, height: 26 }}
|
|
27
28
|
>
|
|
28
29
|
<w
|
|
29
30
|
type="BUTTON"
|
|
30
31
|
text="Add Item"
|
|
31
|
-
ws={
|
|
32
|
+
ws={WindowStyle.VISIBLE}
|
|
32
33
|
style={{ width: 80, height: 26 }}
|
|
33
34
|
onEvent={(e) => {
|
|
34
|
-
if (e.msg ===
|
|
35
|
+
if (e.msg === WmMsg.LBUTTONDOWN) {
|
|
35
36
|
setItems(prev => [...prev, `Item ${itemCounter++}`])
|
|
36
37
|
}
|
|
37
38
|
}}
|
|
@@ -39,7 +40,7 @@ function App() {
|
|
|
39
40
|
<w
|
|
40
41
|
type="STATIC"
|
|
41
42
|
text={`Selected[${selIndex}]: ${selectedText}`}
|
|
42
|
-
ws={
|
|
43
|
+
ws={WindowStyle.VISIBLE}
|
|
43
44
|
style={{ width: 200, height: 26 }}
|
|
44
45
|
/>
|
|
45
46
|
</w>
|
|
@@ -58,7 +59,7 @@ function App() {
|
|
|
58
59
|
|
|
59
60
|
gui.RegisterClass('ListBoxDemo', (hwnd, msg, wParam, lParam) => {
|
|
60
61
|
if (!hwnd) return gui.DefWindowProc(hwnd, msg, wParam, lParam)
|
|
61
|
-
if (msg ===
|
|
62
|
+
if (msg === WmMsg.CREATE) {
|
|
62
63
|
render(<App />, hwnd)
|
|
63
64
|
return 0
|
|
64
65
|
}
|
|
@@ -67,5 +68,5 @@ gui.RegisterClass('ListBoxDemo', (hwnd, msg, wParam, lParam) => {
|
|
|
67
68
|
})
|
|
68
69
|
|
|
69
70
|
const hwnd = gui.CreateWindow('ListBoxDemo', 'ListBox Demo',
|
|
70
|
-
|
|
71
|
+
WindowStyle.OVERLAPPEDWINDOW, 200, 100, 400, 500, null, null)
|
|
71
72
|
if (hwnd) gui.ShowWindow(hwnd)
|