quickwin 2.1.1 → 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.
Files changed (117) hide show
  1. package/README.en.md +9 -9
  2. package/README.md +9 -9
  3. package/constants.ts +1063 -0
  4. package/enum_map.d.ts +129 -0
  5. package/examples/PdfCanvas.js +2 -2
  6. package/examples/PdfCanvas.tsx +3 -2
  7. package/examples/{exec_server.js → execd/main.js} +1114 -287
  8. package/examples/execd/tray.js +192 -0
  9. package/examples/execd/worker.js +122 -0
  10. package/examples/pdf_preview2.js +46 -46
  11. package/examples/pdf_preview2.ts +55 -54
  12. package/examples/pdf_viewer.js +134 -130
  13. package/examples/pdf_viewer.tsx +6 -5
  14. package/examples/test_gallery.js +135 -131
  15. package/examples/test_gallery.tsx +9 -8
  16. package/examples/test_react_lazy.js +130 -128
  17. package/examples/test_react_lazy.tsx +7 -6
  18. package/examples/test_react_listbox.js +130 -128
  19. package/examples/test_react_listbox.tsx +8 -7
  20. package/examples/test_root_window.js +130 -128
  21. package/examples/test_root_window.tsx +5 -5
  22. package/examples/test_tab.js +130 -128
  23. package/examples/test_tab.tsx +7 -6
  24. package/examples/tray_demo.js +8 -8
  25. package/examples/tray_demo.tsx +9 -8
  26. package/lib/dumpRects.js +2 -2
  27. package/lib/dumpRects.ts +3 -2
  28. package/lib/fetch.js +15 -15
  29. package/lib/fetch.ts +16 -15
  30. package/lib/ffi/bind.js +3 -3
  31. package/lib/ffi/bind.ts +3 -3
  32. package/lib/ffi/ctype.ts +3 -1
  33. package/lib/ffi/struct.js +23 -7
  34. package/lib/ffi/struct.ts +50 -23
  35. package/lib/http-server.js +5 -5
  36. package/lib/http-server.ts +6 -5
  37. package/lib/react-qw/components/Button.js +2 -2
  38. package/lib/react-qw/components/CheckBox.js +4 -4
  39. package/lib/react-qw/components/ComboBox.js +10 -10
  40. package/lib/react-qw/components/DateTimePicker.js +12 -12
  41. package/lib/react-qw/components/Input.js +7 -7
  42. package/lib/react-qw/components/Link.js +4 -4
  43. package/lib/react-qw/components/ListBox.js +12 -12
  44. package/lib/react-qw/components/ListView.js +35 -35
  45. package/lib/react-qw/components/PathPicker.js +3 -3
  46. package/lib/react-qw/components/ProgressBar.js +4 -4
  47. package/lib/react-qw/components/RadioButton.js +4 -4
  48. package/lib/react-qw/components/ScrollView.js +28 -28
  49. package/lib/react-qw/components/Slider.js +11 -11
  50. package/lib/react-qw/components/Tab.js +10 -10
  51. package/lib/react-qw/components/Tooltip.js +8 -8
  52. package/lib/react-qw/components/TreeView.js +20 -20
  53. package/lib/react-qw/index.js +5 -5
  54. package/lib/react-qw/index.ts +6 -5
  55. package/lib/react-qw/props.js +4 -4
  56. package/lib/react-qw/props.ts +5 -4
  57. package/lib/react-qw/reconciler.js +10 -10
  58. package/lib/react-qw/reconciler.ts +11 -10
  59. package/lib/text-measure.js +3 -3
  60. package/lib/text-measure.ts +4 -3
  61. package/lib/websocket.js +17 -17
  62. package/lib/websocket.ts +18 -17
  63. package/lib/windows/advapi32.js +7 -7
  64. package/lib/windows/advapi32.ts +7 -7
  65. package/lib/windows/gdi32.js +17 -17
  66. package/lib/windows/gdi32.ts +17 -17
  67. package/lib/windows/kernel32.js +41 -2
  68. package/lib/windows/kernel32.ts +45 -2
  69. package/lib/windows/shell32.js +24 -3
  70. package/lib/windows/shell32.ts +27 -4
  71. package/lib/windows/structs.js +230 -92
  72. package/lib/windows/structs.ts +278 -92
  73. package/lib/windows/user32.js +18 -6
  74. package/lib/windows/user32.ts +18 -6
  75. package/lib/windows/winspool.js +3 -3
  76. package/lib/windows/winspool.ts +3 -3
  77. package/package.json +4 -3
  78. package/quickwin.d.ts +32 -10
  79. package/qwin-nowasm-x86.exe +0 -0
  80. package/qwin-nowasm.exe +0 -0
  81. package/qwin-x86.exe +0 -0
  82. package/qwin.exe +0 -0
  83. package/test/test_ffi_bind.js +12 -10
  84. package/test/test_ffi_bind.ts +14 -12
  85. package/test/test_ffi_struct.js +60 -26
  86. package/test/test_ffi_struct.ts +58 -28
  87. package/test/test_ffi_windows.js +1 -1
  88. package/test/test_ffi_windows.ts +1 -1
  89. package/test/test_files.js +7 -7
  90. package/test/test_files.ts +8 -8
  91. package/test/test_gdi_draw.js +51 -51
  92. package/test/test_gdi_draw.ts +57 -57
  93. package/test/test_http_server.js +3 -3
  94. package/test/test_http_server.ts +4 -3
  95. package/test/test_ipv6.js +3 -3
  96. package/test/test_ipv6.ts +4 -3
  97. package/test/test_net_event.js +3 -3
  98. package/test/test_net_event.ts +4 -3
  99. package/test/test_printer.js +4 -4
  100. package/test/test_printer.ts +5 -5
  101. package/test/test_react_complex.js +132 -130
  102. package/test/test_react_counter.js +130 -128
  103. package/test/test_react_flex.js +132 -130
  104. package/test/test_react_hidden.js +130 -128
  105. package/test/test_react_listview_link.js +131 -129
  106. package/test/test_react_notify.js +148 -146
  107. package/test/test_react_render.js +130 -128
  108. package/test/test_registry.js +6 -6
  109. package/test/test_registry.ts +8 -8
  110. package/test/test_wolfssl_read.js +8 -8
  111. package/test/test_wolfssl_read.ts +9 -8
  112. package/examples/exec_server.tsx +0 -488
  113. package/examples/exec_server_worker.js +0 -395
  114. package/examples/exec_server_worker.ts +0 -417
  115. package/examples/setres.js +0 -79
  116. package/examples/setres.ts +0 -86
  117. package/quickwin_const.d.ts +0 -1037
@@ -16277,7 +16277,7 @@ function doEncode(dv, base, fields, v) {
16277
16277
  function createStruct(t) {
16278
16278
  const { fields, size, maxEffectiveAlign } = computeStructLayout(t);
16279
16279
  return {
16280
- __struct: t,
16280
+ fields,
16281
16281
  size,
16282
16282
  structAlign: maxEffectiveAlign,
16283
16283
  decode: (p) => {
@@ -16306,6 +16306,14 @@ function createStruct(t) {
16306
16306
  };
16307
16307
  }
16308
16308
  function buildDecl(kind, member, pack) {
16309
+ const declKind = member["#"];
16310
+ if (declKind !== void 0 && declKind !== kind)
16311
+ throw new Error(`ffi-struct: ${kind}() received a '${String(declKind)}' declaration (kind mismatch \u2014 use ${declKind}() for it)`);
16312
+ const declPack = member["#pack"];
16313
+ if (pack === void 0 && declPack !== void 0)
16314
+ pack = declPack;
16315
+ else if (pack !== void 0 && declPack !== void 0 && pack !== declPack)
16316
+ throw new Error(`ffi-struct: #pack conflict: opts.pack=${pack} vs declaration ${String(declPack)}`);
16309
16317
  const decl = { "#": kind };
16310
16318
  if (pack !== void 0)
16311
16319
  decl["#pack"] = pack;
@@ -16314,49 +16322,6 @@ function buildDecl(kind, member, pack) {
16314
16322
  decl[k] = v;
16315
16323
  return decl;
16316
16324
  }
16317
- function structArray(def) {
16318
- const { fields, size } = computeStructLayout(def.__struct);
16319
- const readN = (dv, n) => {
16320
- const out = [];
16321
- for (let i = 0; i < n; i++)
16322
- out.push(doDecode(dv, i * size, fields));
16323
- return out;
16324
- };
16325
- return {
16326
- encode: (els) => {
16327
- if (!Array.isArray(els) || els.length === 0)
16328
- throw new Error(`ffi-struct: structArray(def).encode(els) requires a non-empty element array (pass NULL for an empty pointer position)`);
16329
- const out = def.alloc(els.length);
16330
- for (let i = 0; i < els.length; i++)
16331
- def.encode(els[i], out, i * def.size);
16332
- return out;
16333
- },
16334
- decode: ((p, count) => {
16335
- if (count !== void 0 && (!Number.isInteger(count) || count < 0))
16336
- throw new Error(`ffi-struct: structArray.decode(p, count) requires a non-negative integer count, got ${count}`);
16337
- if (typeof p === "number") {
16338
- if (count === void 0)
16339
- throw new Error(`ffi-struct: structArray.decode(address, count) requires an explicit count (a bare address carries no length)`);
16340
- if (count === 0)
16341
- return [];
16342
- return readN(new DataView(ffi2.readBytes(p, count * size)), count);
16343
- }
16344
- let n;
16345
- if (count !== void 0) {
16346
- n = count;
16347
- if (n * size > p.byteLength)
16348
- throw new Error(`ffi-struct: structArray.decode: count ${n} \xD7 size ${size} = ${n * size} exceeds buffer byteLength ${p.byteLength}`);
16349
- } else {
16350
- if (p.byteLength % size !== 0)
16351
- throw new Error(`ffi-struct: structArray.decode: byteLength ${p.byteLength} is not a multiple of size ${size} (mixed buffer? pass count explicitly)`);
16352
- n = p.byteLength / size;
16353
- }
16354
- if (n === 0)
16355
- return [];
16356
- return readN(new DataView(p), n);
16357
- })
16358
- };
16359
- }
16360
16325
  function struct(a, b6, c) {
16361
16326
  const isNamed = typeof a === "string";
16362
16327
  const raw = isNamed ? b6 : a;
@@ -16365,21 +16330,28 @@ function struct(a, b6, c) {
16365
16330
  }
16366
16331
 
16367
16332
  // _build/lib/windows/structs.js
16368
- var RECT = /* @__PURE__ */ struct("RECT", {
16333
+ var RECT_DECL = {
16334
+ "#": "struct",
16369
16335
  left: "i32",
16370
16336
  top: "i32",
16371
16337
  right: "i32",
16372
16338
  bottom: "i32"
16373
- });
16374
- var POINT = /* @__PURE__ */ struct("POINT", {
16339
+ };
16340
+ var RECT = /* @__PURE__ */ struct("RECT", RECT_DECL);
16341
+ var POINT_DECL = {
16342
+ "#": "struct",
16375
16343
  x: "i32",
16376
16344
  y: "i32"
16377
- });
16378
- var SIZE = /* @__PURE__ */ struct("SIZE", {
16345
+ };
16346
+ var POINT = /* @__PURE__ */ struct("POINT", POINT_DECL);
16347
+ var SIZE_DECL = {
16348
+ "#": "struct",
16379
16349
  cx: "i32",
16380
16350
  cy: "i32"
16381
- });
16382
- var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16351
+ };
16352
+ var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
16353
+ var LOGFONTW_DECL = {
16354
+ "#": "struct",
16383
16355
  lfHeight: "i32",
16384
16356
  lfWidth: "i32",
16385
16357
  lfEscapement: "i32",
@@ -16394,8 +16366,10 @@ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16394
16366
  lfQuality: "u8",
16395
16367
  lfPitchAndFamily: "u8",
16396
16368
  lfFaceName: "u16[32]@utf-16le"
16397
- });
16398
- var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16369
+ };
16370
+ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
16371
+ var OPENFILENAMEW_DECL = {
16372
+ "#": "struct",
16399
16373
  lStructSize: "u32",
16400
16374
  hwndOwner: "<HWND>ptr",
16401
16375
  hInstance: "<HMODULE>ptr",
@@ -16419,8 +16393,10 @@ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16419
16393
  pvReserved: "<>ptr",
16420
16394
  dwReserved: "u32",
16421
16395
  FlagsEx: "u32"
16422
- });
16423
- var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16396
+ };
16397
+ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", OPENFILENAMEW_DECL);
16398
+ var BROWSEINFOW_DECL = {
16399
+ "#": "struct",
16424
16400
  hwndOwner: "<HWND>ptr",
16425
16401
  pidlRoot: "<>ptr",
16426
16402
  pszDisplayName: "<>ptr",
@@ -16429,13 +16405,17 @@ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16429
16405
  lpfn: "<>ptr",
16430
16406
  lParam: "<>ptr",
16431
16407
  iImage: "i32"
16432
- });
16433
- var NMHDR = /* @__PURE__ */ struct("NMHDR", {
16408
+ };
16409
+ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", BROWSEINFOW_DECL);
16410
+ var NMHDR_DECL = {
16411
+ "#": "struct",
16434
16412
  hwndFrom: "<HWND>ptr",
16435
16413
  idFrom: "<>ptr",
16436
16414
  code: "i32"
16437
- });
16438
- var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16415
+ };
16416
+ var NMHDR = /* @__PURE__ */ struct("NMHDR", NMHDR_DECL);
16417
+ var SYSTEMTIME_DECL = {
16418
+ "#": "struct",
16439
16419
  wYear: "u16",
16440
16420
  wMonth: "u16",
16441
16421
  wDayOfWeek: "u16",
@@ -16444,35 +16424,44 @@ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16444
16424
  wMinute: "u16",
16445
16425
  wSecond: "u16",
16446
16426
  wMilliseconds: "u16"
16447
- });
16448
- var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", {
16449
- hdr: NMHDR.__struct,
16427
+ };
16428
+ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", SYSTEMTIME_DECL);
16429
+ var NMDATETIMECHANGE_DECL = {
16430
+ "#": "struct",
16431
+ hdr: NMHDR_DECL,
16450
16432
  dwFlags: "u32",
16451
- st: SYSTEMTIME.__struct
16452
- });
16453
- var LITEM = /* @__PURE__ */ struct("LITEM", {
16433
+ st: SYSTEMTIME_DECL
16434
+ };
16435
+ var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", NMDATETIMECHANGE_DECL);
16436
+ var LITEM_DECL = {
16437
+ "#": "struct",
16454
16438
  mask: "u32",
16455
16439
  iLink: "i32",
16456
16440
  state: "u32",
16457
16441
  stateMask: "u32",
16458
16442
  szID: "u16[48]@utf-16le",
16459
16443
  szUrl: "u16[2084]@utf-16le"
16460
- });
16461
- var NMLINK = /* @__PURE__ */ struct("NMLINK", {
16462
- hdr: NMHDR.__struct,
16463
- item: LITEM.__struct
16464
- });
16465
- var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", {
16466
- hdr: NMHDR.__struct,
16444
+ };
16445
+ var NMLINK_DECL = {
16446
+ "#": "struct",
16447
+ hdr: NMHDR_DECL,
16448
+ item: LITEM_DECL
16449
+ };
16450
+ var NMLINK = /* @__PURE__ */ struct("NMLINK", NMLINK_DECL);
16451
+ var NMCUSTOMDRAW_DECL = {
16452
+ "#": "struct",
16453
+ hdr: NMHDR_DECL,
16467
16454
  dwDrawStage: "u32",
16468
16455
  hdc: "<HDC>ptr",
16469
16456
  rc: "i32[4]",
16470
16457
  dwItemSpec: "<>ptr",
16471
16458
  uItemState: "u32",
16472
16459
  lItemlParam: "<>ptr"
16473
- });
16474
- var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16475
- hdr: NMHDR.__struct,
16460
+ };
16461
+ var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", NMCUSTOMDRAW_DECL);
16462
+ var NMLVCUSTOMDRAW_DECL = {
16463
+ "#": "struct",
16464
+ hdr: NMHDR_DECL,
16476
16465
  dwDrawStage: "u32",
16477
16466
  hdc: "<HDC>ptr",
16478
16467
  rc: "i32[4]",
@@ -16483,9 +16472,11 @@ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16483
16472
  clrTextBk: "u32",
16484
16473
  iSubItem: "i32",
16485
16474
  dwItemType: "u32"
16486
- });
16487
- var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16488
- hdr: NMHDR.__struct,
16475
+ };
16476
+ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", NMLVCUSTOMDRAW_DECL);
16477
+ var NMLISTVIEW_DECL = {
16478
+ "#": "struct",
16479
+ hdr: NMHDR_DECL,
16489
16480
  iItem: "i32",
16490
16481
  iSubItem: "i32",
16491
16482
  uNewState: "u32",
@@ -16493,8 +16484,10 @@ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16493
16484
  uChanged: "u32",
16494
16485
  ptAction: "i32[2]",
16495
16486
  lParam: "<>ptr"
16496
- });
16497
- var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16487
+ };
16488
+ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", NMLISTVIEW_DECL);
16489
+ var TCITEMW_DECL = {
16490
+ "#": "struct",
16498
16491
  mask: "u32",
16499
16492
  dwState: "u32",
16500
16493
  dwStateMask: "u32",
@@ -16502,8 +16495,10 @@ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16502
16495
  cchTextMax: "i32",
16503
16496
  iImage: "i32",
16504
16497
  lParam: "<>ptr"
16505
- });
16506
- var TTTOOLINFOW = /* @__PURE__ */ struct("TTTOOLINFOW", {
16498
+ };
16499
+ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", TCITEMW_DECL);
16500
+ var TTTOOLINFOW_DECL = {
16501
+ "#": "struct",
16507
16502
  cbSize: "u32",
16508
16503
  uFlags: "u32",
16509
16504
  hwnd: "<HWND>ptr",
@@ -16514,8 +16509,10 @@ var TTTOOLINFOW = /* @__PURE__ */ struct("TTTOOLINFOW", {
16514
16509
  lParam: "<>ptr",
16515
16510
  lpReserved: "<>ptr"
16516
16511
  // WinXP+ 追加字段(系统 sizeof 含之)
16517
- });
16518
- var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16512
+ };
16513
+ var TTTOOLINFOW = /* @__PURE__ */ struct("TTTOOLINFOW", TTTOOLINFOW_DECL);
16514
+ var TVITEM_DECL = {
16515
+ "#": "struct",
16519
16516
  mask: "u32",
16520
16517
  hItem: "<>ptr",
16521
16518
  state: "u32",
@@ -16526,20 +16523,26 @@ var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16526
16523
  iSelectedImage: "i32",
16527
16524
  cChildren: "i32",
16528
16525
  lParam: "<>ptr"
16529
- });
16530
- var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", {
16526
+ };
16527
+ var TVITEM = /* @__PURE__ */ struct("TVITEM", TVITEM_DECL);
16528
+ var TVINSERTSTRUCT_DECL = {
16529
+ "#": "struct",
16531
16530
  hParent: "<>ptr",
16532
16531
  hInsertAfter: "<>ptr",
16533
- item: TVITEM.__struct
16534
- });
16535
- var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", {
16532
+ item: TVITEM_DECL
16533
+ };
16534
+ var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", TVINSERTSTRUCT_DECL);
16535
+ var LVHITTESTINFO_DECL = {
16536
+ "#": "struct",
16536
16537
  pt: "i32[2]",
16537
16538
  flags: "u32",
16538
16539
  iItem: "i32",
16539
16540
  iSubItem: "i32",
16540
16541
  iGroup: "i32"
16541
- });
16542
- var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16542
+ };
16543
+ var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", LVHITTESTINFO_DECL);
16544
+ var LVITEMW_DECL = {
16545
+ "#": "struct",
16543
16546
  mask: "u32",
16544
16547
  iItem: "i32",
16545
16548
  iSubItem: "i32",
@@ -16555,8 +16558,10 @@ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16555
16558
  puColumns: "<>ptr",
16556
16559
  piColFmt: "<>ptr",
16557
16560
  iGroup: "i32"
16558
- });
16559
- var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16561
+ };
16562
+ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", LVITEMW_DECL);
16563
+ var LVCOLUMNW_DECL = {
16564
+ "#": "struct",
16560
16565
  mask: "u32",
16561
16566
  fmt: "i32",
16562
16567
  cx: "i32",
@@ -16568,23 +16573,16 @@ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16568
16573
  cxMin: "i32",
16569
16574
  cxDefault: "i32",
16570
16575
  cxIdeal: "i32"
16571
- });
16572
- var MSG = /* @__PURE__ */ struct("MSG", {
16573
- hwnd: "<HWND>ptr",
16574
- message: "u32",
16575
- wParam: "<>ptr",
16576
- lParam: "<>ptr",
16577
- time: "u32",
16578
- pt: POINT.__struct
16579
- });
16580
- var PAINTSTRUCT = /* @__PURE__ */ struct("PAINTSTRUCT", {
16581
- hdc: "<HDC>ptr",
16582
- fErase: "i32",
16583
- rcPaint: RECT.__struct,
16584
- fRestore: "i32",
16585
- fIncUpdate: "i32",
16586
- rgbReserved: "u8[32]"
16587
- });
16576
+ };
16577
+ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
16578
+ var NOTIFYICONIDENTIFIER_DECL = {
16579
+ "#": "struct",
16580
+ cbSize: "u32",
16581
+ hWnd: "<HWND>ptr",
16582
+ uID: "u32",
16583
+ guidItem: "u32[4]"
16584
+ };
16585
+ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
16588
16586
 
16589
16587
  // _build/lib/windows/user32.js
16590
16588
  var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
@@ -16618,7 +16616,6 @@ import * as os4 from "os";
16618
16616
 
16619
16617
  // _build/lib/windows/gdi32.js
16620
16618
  var b2 = (name, sig, encoders) => bind("gdi32.dll", name, sig, encoders);
16621
- var POINTArr = structArray(POINT);
16622
16619
  var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16623
16620
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16624
16621
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
@@ -16651,14 +16648,14 @@ function applyProps(instance, newProps, _oldProps) {
16651
16648
  gui.ShowWindow(
16652
16649
  hwnd2,
16653
16650
  newProps.hidden ? 0 : 5
16654
- /* gui.ShowWindowCmd.SHOW */
16651
+ /* ShowWindowCmd.SHOW */
16655
16652
  );
16656
16653
  }
16657
16654
  if ("visible" in newProps) {
16658
16655
  gui.ShowWindow(
16659
16656
  hwnd2,
16660
16657
  newProps.visible ? 5 : 0
16661
- /* gui.ShowWindowCmd.HIDE */
16658
+ /* ShowWindowCmd.HIDE */
16662
16659
  );
16663
16660
  }
16664
16661
  }
@@ -16754,7 +16751,7 @@ function measureText(hdc, text, maxWidth) {
16754
16751
  -1,
16755
16752
  r.ptr,
16756
16753
  1024
16757
- /* gui.DrawTextFlag.CALCRECT */
16754
+ /* DrawTextFlag.CALCRECT */
16758
16755
  );
16759
16756
  const { right, bottom } = RECT.decode(r);
16760
16757
  return { width: right, height: bottom };
@@ -16802,7 +16799,7 @@ function setupWindowProc(instance, hwnd2) {
16802
16799
  const oldProc = GetWindowLongPtr(
16803
16800
  hwnd2,
16804
16801
  -4
16805
- /* gui.Gwlp.WNDPROC */
16802
+ /* Gwlp.WNDPROC */
16806
16803
  );
16807
16804
  instancesByHwnd.set(hwnd2, instance);
16808
16805
  gui3.SetWindowProc(hwnd2, (hwnd3, msg, wParam, lParam) => {
@@ -16890,7 +16887,7 @@ function runFlexLayout(inst) {
16890
16887
  r.width * scaleFactor,
16891
16888
  r.height * scaleFactor,
16892
16889
  64
16893
- /* gui.SetWindowPosFlag.SWP_SHOWWINDOW */
16890
+ /* SetWindowPosFlag.SWP_SHOWWINDOW */
16894
16891
  );
16895
16892
  InvalidateRect(child.hwnd, NULL, 1);
16896
16893
  child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
@@ -17046,7 +17043,7 @@ var hostConfig = {
17046
17043
  gui3.ShowWindow(
17047
17044
  instance.hwnd,
17048
17045
  0
17049
- /* gui.ShowWindowCmd.HIDE */
17046
+ /* ShowWindowCmd.HIDE */
17050
17047
  );
17051
17048
  },
17052
17049
  hideTextInstance(instance) {
@@ -17054,7 +17051,7 @@ var hostConfig = {
17054
17051
  gui3.ShowWindow(
17055
17052
  instance.hwnd,
17056
17053
  0
17057
- /* gui.ShowWindowCmd.HIDE */
17054
+ /* ShowWindowCmd.HIDE */
17058
17055
  );
17059
17056
  },
17060
17057
  unhideInstance(instance, _props) {
@@ -17062,7 +17059,7 @@ var hostConfig = {
17062
17059
  gui3.ShowWindow(
17063
17060
  instance.hwnd,
17064
17061
  5
17065
- /* gui.ShowWindowCmd.SHOW */
17062
+ /* ShowWindowCmd.SHOW */
17066
17063
  );
17067
17064
  },
17068
17065
  unhideTextInstance(instance, _text) {
@@ -17070,7 +17067,7 @@ var hostConfig = {
17070
17067
  gui3.ShowWindow(
17071
17068
  instance.hwnd,
17072
17069
  5
17073
- /* gui.ShowWindowCmd.SHOW */
17070
+ /* ShowWindowCmd.SHOW */
17074
17071
  );
17075
17072
  },
17076
17073
  shouldSetTextContent(_type, props) {
@@ -17498,7 +17495,7 @@ function getCellFont(hwnd2, style) {
17498
17495
  ...base,
17499
17496
  ...style.bold ? {
17500
17497
  lfWeight: 700
17501
- /* gui.FontWeight.BOLD */
17498
+ /* FontWeight.BOLD */
17502
17499
  } : {},
17503
17500
  ...style.italic ? { lfItalic: 1 } : {},
17504
17501
  ...style.underline ? { lfUnderline: 1 } : {}
@@ -17620,7 +17617,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17620
17617
  4150,
17621
17618
  0,
17622
17619
  32 | 1 | 65536
17623
- /* gui.LvExStyle.DOUBLEBUFFER */
17620
+ /* LvExStyle.DOUBLEBUFFER */
17624
17621
  );
17625
17622
  const n = columns.length;
17626
17623
  for (let j = 0; j < n; j++) {
@@ -17665,7 +17662,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17665
17662
  4126,
17666
17663
  j,
17667
17664
  -2
17668
- /* gui.LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17665
+ /* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17669
17666
  );
17670
17667
  }
17671
17668
  }
@@ -17807,7 +17804,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17807
17804
  natW,
17808
17805
  natH,
17809
17806
  4
17810
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17807
+ /* SetWindowPosFlag.SWP_NOZORDER */
17811
17808
  );
17812
17809
  forceFlexLayout(content);
17813
17810
  if (natW > svW) {
@@ -17846,7 +17843,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17846
17843
  0,
17847
17844
  0,
17848
17845
  1 | 4
17849
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17846
+ /* SetWindowPosFlag.SWP_NOZORDER */
17850
17847
  );
17851
17848
  gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17852
17849
  }
@@ -17912,7 +17909,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17912
17909
  handleScroll(
17913
17910
  e,
17914
17911
  1
17915
- /* gui.ScrollBar.VERT */
17912
+ /* ScrollBar.VERT */
17916
17913
  );
17917
17914
  return 0;
17918
17915
  }
@@ -17920,7 +17917,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17920
17917
  handleScroll(
17921
17918
  e,
17922
17919
  0
17923
- /* gui.ScrollBar.HORZ */
17920
+ /* ScrollBar.HORZ */
17924
17921
  );
17925
17922
  return 0;
17926
17923
  }
@@ -18077,7 +18074,7 @@ function Tooltip({ text, children, balloon }) {
18077
18074
  0,
18078
18075
  0,
18079
18076
  2 | 1 | 16
18080
- /* gui.SetWindowPosFlag.SWP_NOACTIVATE */
18077
+ /* SetWindowPosFlag.SWP_NOACTIVATE */
18081
18078
  );
18082
18079
  const ti = buildToolInfo(hTarget, text);
18083
18080
  gui15.SendMessage(hTT, 1074, 0, ti.ptr);
@@ -18142,7 +18139,7 @@ function deleteAllItems(hTree) {
18142
18139
  4353,
18143
18140
  1,
18144
18141
  -65536
18145
- /* gui.TvInsertAfter.ROOT */
18142
+ /* TvInsertAfter.ROOT */
18146
18143
  );
18147
18144
  }
18148
18145
  var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
@@ -18174,7 +18171,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18174
18171
  4396,
18175
18172
  0,
18176
18173
  4
18177
- /* gui.TvExStyle.DOUBLEBUFFER */
18174
+ /* TvExStyle.DOUBLEBUFFER */
18178
18175
  );
18179
18176
  }, []);
18180
18177
  (0, import_react16.useEffect)(() => {
@@ -18216,9 +18213,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18216
18213
  var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18217
18214
 
18218
18215
  // _build/lib/windows/shell32.js
18219
- var b4 = (name, sig) => bind("shell32.dll", name, sig);
18216
+ var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18220
18217
  var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18221
18218
  var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18219
+ var Shell_NotifyIconGetRect = (() => {
18220
+ try {
18221
+ return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18222
+ } catch {
18223
+ return null;
18224
+ }
18225
+ })();
18222
18226
 
18223
18227
  // _build/lib/windows/ole32.js
18224
18228
  var b5 = (name, sig) => bind("ole32.dll", name, sig);
@@ -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 === gui.WmMsg.DESTROY) {
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 = gui.WindowStyle.VISIBLE
21
- const CLIPCHILDREN = gui.WindowStyle.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 | gui.WindowStyle.BORDER} style={{flexDirection:'column', gap:8, alignSelf:'stretch', flexGrow:1, padding:8}}>
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 | gui.WindowStyle.BORDER} style={{flexDirection:'column', gap:6, alignSelf:'stretch', flexGrow:1}}>
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 | gui.WindowStyle.BORDER} text="Short" style={{width:'auto', height:24}} />
173
- <w type="STATIC" ws={VISIBLE | gui.WindowStyle.BORDER} text="A much longer label" style={{width:'auto', height:24}} />
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
- gui.WindowStyle.OVERLAPPEDWINDOW,
273
+ WindowStyle.OVERLAPPEDWINDOW,
273
274
  100, 100, 1400, 1200, null, null
274
275
  )
275
276