childProc.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. #include "Win32.h"
  2. #include "ID.h"
  3. #include "Function.h"
  4. #include "SharedValue.h"
  5. HFONT Font();
  6. LRESULT CALLBACK StartProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam)
  7. {
  8. switch (msg)
  9. {
  10. case WM_DESTROY:
  11. hStart = NULL;
  12. break;
  13. default:
  14. return DefWindowProc(hWnd1, msg, wParam, lParam);
  15. }
  16. return 0;
  17. }
  18. LRESULT CALLBACK WeatherProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam) {
  19. switch (msg) {
  20. case WM_CREATE:
  21. {
  22. HFONT hFont1 = Font();
  23. HWND hWeaSet = CreateWindow(
  24. L"BUTTON", L"基础选项",
  25. WS_VISIBLE | WS_CHILD | BS_GROUPBOX,
  26. 20, 20, 330, 100,
  27. hWnd1, NULL,
  28. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  29. );
  30. HWND hWeaSet_1 = CreateWindow(
  31. L"BUTTON", L"晴天",
  32. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | WS_GROUP,
  33. 40, 55, 80, 40,
  34. hWnd1, (HMENU)ID_FC_Wea_SET_1,
  35. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  36. );
  37. HWND hWeaSet_2 = CreateWindow(
  38. L"BUTTON", L"雨天",
  39. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  40. 140, 55, 80, 40,
  41. hWnd1, (HMENU)ID_FC_Wea_SET_2,
  42. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  43. );
  44. HWND hWeaSet_3 = CreateWindow(
  45. L"BUTTON", L"雷暴",
  46. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  47. 240, 55, 80, 40,
  48. hWnd1, (HMENU)ID_FC_Wea_SET_3,
  49. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  50. );
  51. HWND hLabel_Wea_1 = CreateWindow(
  52. L"STATIC", L"高级选项",
  53. WS_VISIBLE | WS_CHILD,
  54. 30, 150, 80, 30,
  55. hWnd1, NULL,
  56. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  57. );
  58. HWND hWeaAdv = CreateWindow(
  59. L"BUTTON", L"天气更替",
  60. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  61. 30, 190, 110, 40,
  62. hWnd1, (HMENU)ID_FC_Wea_ADV,
  63. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  64. );
  65. HWND hWeaOK = CreateWindow(
  66. L"BUTTON", L"提交",
  67. WS_VISIBLE | WS_CHILD,
  68. 250, 250, 110, 40,
  69. hWnd1, (HMENU)ID_FC_Wea_OK,
  70. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  71. );
  72. SendMessage(hWeaSet_1, BM_SETCHECK, BST_CHECKED, 0);
  73. SendMessage(hWeaAdv, BM_SETCHECK, BST_CHECKED, 0);
  74. }
  75. break;
  76. case WM_COMMAND:
  77. {
  78. WORD wmId = LOWORD(wParam);
  79. switch (wmId)
  80. {
  81. case ID_FC_Wea_OK:
  82. if (IsDlgButtonChecked(hWnd1, ID_FC_Wea_ADV) == BST_CHECKED)
  83. SendCommand(C("gamerule doWeatherCycle true"));
  84. else SendCommand(C("gamerule doWeatherCycle false"));
  85. if (IsDlgButtonChecked(hWnd1, ID_FC_Wea_SET_1) == BST_CHECKED)
  86. SendCommand(C("weather clear"));
  87. else if (IsDlgButtonChecked(hWnd1, ID_FC_Wea_SET_2) == BST_CHECKED)
  88. SendCommand(C("weather rain"));
  89. else SendCommand(C("weather thunder"));
  90. DestroyWindow(hWnd1);
  91. break;
  92. default:
  93. break;
  94. }
  95. break;
  96. }
  97. case WM_CLOSE:
  98. DestroyWindow(hWnd1);
  99. break;
  100. case WM_DESTROY:
  101. hWeather = NULL;
  102. break;
  103. default:
  104. return DefWindowProc(hWnd1, msg, wParam, lParam);
  105. }
  106. return 0;
  107. }
  108. LRESULT CALLBACK TimeProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam) {
  109. switch (msg) {
  110. case WM_CREATE:
  111. {
  112. HFONT hFont1 = Font();
  113. HWND hWeaSet = CreateWindow(
  114. L"BUTTON", L"快速设定",
  115. WS_VISIBLE | WS_CHILD | BS_GROUPBOX,
  116. 20, 20, 330, 150,
  117. hWnd1, NULL,
  118. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  119. );
  120. HWND hTimeSet_1 = CreateWindow(
  121. L"BUTTON", L"日出",
  122. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | WS_GROUP,
  123. 40, 55, 80, 40,
  124. hWnd1, (HMENU)ID_FC_Time_SET_1,
  125. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  126. );
  127. HWND hTimeSet_2 = CreateWindow(
  128. L"BUTTON", L"白日",
  129. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  130. 140, 55, 80, 40,
  131. hWnd1, (HMENU)ID_FC_Time_SET_2,
  132. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  133. );
  134. HWND hTimeSet_3 = CreateWindow(
  135. L"BUTTON", L"正午",
  136. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  137. 240, 55, 80, 40,
  138. hWnd1, (HMENU)ID_FC_Time_SET_3,
  139. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  140. );
  141. HWND hTimeSet_4 = CreateWindow(
  142. L"BUTTON", L"日落",
  143. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  144. 40, 115, 80, 40,
  145. hWnd1, (HMENU)ID_FC_Time_SET_4,
  146. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  147. );
  148. HWND hTimeSet_5 = CreateWindow(
  149. L"BUTTON", L"夜晚",
  150. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  151. 140, 115, 80, 40,
  152. hWnd1, (HMENU)ID_FC_Time_SET_5,
  153. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  154. );
  155. HWND hTimeSet_6 = CreateWindow(
  156. L"BUTTON", L"午夜",
  157. WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
  158. 240, 115, 80, 40,
  159. hWnd1, (HMENU)ID_FC_Time_SET_6,
  160. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  161. );
  162. HWND hLabel_Wea_1 = CreateWindow(
  163. L"STATIC", L"高级选项",
  164. WS_VISIBLE | WS_CHILD,
  165. 30, 210, 80, 30,
  166. hWnd1, NULL,
  167. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  168. );
  169. HWND hTimeAdv = CreateWindow(
  170. L"BUTTON", L"时间更替",
  171. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  172. 30, 250, 110, 40,
  173. hWnd1, (HMENU)ID_FC_Time_ADV,
  174. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  175. );
  176. HWND hWeaOK = CreateWindow(
  177. L"BUTTON", L"提交",
  178. WS_VISIBLE | WS_CHILD,
  179. 250, 300, 110, 40,
  180. hWnd1, (HMENU)ID_FC_Time_OK,
  181. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  182. );
  183. SendMessage(hTimeSet_3, BM_SETCHECK, BST_CHECKED, 0);
  184. SendMessage(hTimeAdv, BM_SETCHECK, BST_CHECKED, 0);
  185. }
  186. break;
  187. case WM_COMMAND:
  188. {
  189. WORD wmId = LOWORD(wParam);
  190. switch (wmId)
  191. {
  192. case ID_FC_Time_OK:
  193. if (IsDlgButtonChecked(hWnd1, ID_FC_Time_ADV) == BST_CHECKED)
  194. SendCommand(C("gamerule doDaylightCycle true"));
  195. else SendCommand(C("gamerule doDaylightCycle false"));
  196. if (IsDlgButtonChecked(hWnd1, ID_FC_Wea_SET_1) == BST_CHECKED)
  197. SendCommand(C("time set sunrise"));
  198. else if (IsDlgButtonChecked(hWnd1, ID_FC_Time_SET_2) == BST_CHECKED)
  199. SendCommand(C("time set day"));
  200. else if (IsDlgButtonChecked(hWnd1, ID_FC_Time_SET_3) == BST_CHECKED)
  201. SendCommand(C("time set noon"));
  202. else if (IsDlgButtonChecked(hWnd1, ID_FC_Time_SET_4) == BST_CHECKED)
  203. SendCommand(C("time set sunset"));
  204. else if (IsDlgButtonChecked(hWnd1, ID_FC_Time_SET_5) == BST_CHECKED)
  205. SendCommand(C("time set night"));
  206. else SendCommand(C("time set midnight"));
  207. DestroyWindow(hWnd1);
  208. break;
  209. default:
  210. break;
  211. }
  212. break;
  213. }
  214. case WM_CLOSE:
  215. DestroyWindow(hWnd1);
  216. break;
  217. case WM_DESTROY:
  218. hTime = NULL;
  219. break;
  220. default:
  221. return DefWindowProc(hWnd1, msg, wParam, lParam);
  222. }
  223. return 0;
  224. return 0;
  225. }
  226. LRESULT CALLBACK LogProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam)
  227. {
  228. switch (msg) {
  229. case WM_CREATE:
  230. {
  231. SetTimer(hWnd1, 1, 100, NULL);
  232. HFONT hFont1 = Font();
  233. HWND hLog = CreateWindow(
  234. L"EDIT", L"Null",
  235. WS_VISIBLE | WS_CHILD | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_READONLY | ES_AUTOVSCROLL,
  236. 30, 30, 910, 510,
  237. hWnd1, (HMENU)ID_LOG,
  238. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  239. );
  240. HWND hLogClear = CreateWindow(
  241. L"BUTTON", L"清除日志",
  242. WS_VISIBLE | WS_CHILD,
  243. 790, 570, 110, 40,
  244. hWnd1, (HMENU)ID_LOG_CLEAR,
  245. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  246. );
  247. break;
  248. }
  249. case WM_COMMAND:
  250. {
  251. WORD wmId = LOWORD(wParam);
  252. switch (wmId)
  253. {
  254. case ID_LOG_CLEAR:
  255. if (MessageBox(hWnd1,
  256. L"是否要清除所有日志?", TITLE,
  257. MB_OKCANCEL | MB_APPLMODAL | MB_ICONQUESTION)
  258. == IDOK)
  259. {
  260. ClearLog();
  261. SetWindowText(GetDlgItem(hWnd1, ID_LOG), _T("Null"));
  262. }
  263. break;
  264. default:
  265. break;
  266. }
  267. break;
  268. }
  269. case WM_TIMER:
  270. Log(GetDlgItem(hLog, ID_LOG));
  271. break;
  272. case WM_CLOSE:
  273. break;
  274. case WM_DESTROY:
  275. KillTimer(hWnd1, 1);
  276. hLog = NULL;
  277. break;
  278. default:
  279. return DefWindowProc(hWnd1, msg, wParam, lParam);
  280. }
  281. return 0;
  282. }
  283. LRESULT CALLBACK PlayerProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam) {
  284. switch (msg) {
  285. case WM_CREATE:
  286. {
  287. HFONT hFont1 = Font();
  288. HWND hLabel_1 = CreateWindow(
  289. L"STATIC", L"操作类型",
  290. WS_VISIBLE | WS_CHILD,
  291. 20, 20, 100, 30,
  292. hWnd1, NULL,
  293. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  294. );
  295. HWND hCmdType = CreateWindow(
  296. L"COMBOBOX", NULL,
  297. WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST,
  298. 130, 20, 200, 160,
  299. hWnd1, (HMENU)ID_FC_Player_TYPE,
  300. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  301. );
  302. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"踢出服务器");
  303. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"赋予管理员权限");
  304. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"撤销管理员权限");
  305. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"更改游戏模式");
  306. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"使玩家失败");
  307. SendMessage(hCmdType, CB_ADDSTRING, 0, (LPARAM)L"发送私密消息");
  308. HWND hLabel_2 = CreateWindow(
  309. L"STATIC", L"玩家ID",
  310. WS_VISIBLE | WS_CHILD,
  311. 20, 70, 60, 30,
  312. hWnd1, NULL,
  313. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  314. );
  315. HWND hPlayerSelect = CreateWindow(
  316. L"EDIT", NULL,
  317. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL,
  318. 20, 90, 310, 40,
  319. hWnd1, (HMENU)ID_FC_Player_LIST,
  320. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  321. );
  322. HWND hLabel_3 = CreateWindow(
  323. L"STATIC", L"消息内容",
  324. WS_CHILD,
  325. 20, 150, 90, 30,
  326. hWnd1, (HMENU)ID_FC_Player_TEXT_s,
  327. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  328. );
  329. HWND hText = CreateWindow(
  330. L"EDIT", NULL,
  331. WS_CHILD | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
  332. 20, 170, 310, 90,
  333. hWnd1, (HMENU)ID_FC_Player_TEXT,
  334. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  335. );
  336. HWND hLabel_4 = CreateWindow(
  337. L"STATIC", L"游戏模式",
  338. WS_CHILD,
  339. 20, 150, 100, 30,
  340. hWnd1, (HMENU)ID_FC_Player_GM_s,
  341. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  342. );
  343. HWND hGMtype = CreateWindow(
  344. L"COMBOBOX", NULL,
  345. WS_CHILD | CBS_DROPDOWNLIST,
  346. 130, 150, 200, 160,
  347. hWnd1, (HMENU)ID_FC_Player_GM,
  348. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  349. );
  350. SendMessage(hGMtype, CB_ADDSTRING, 0, (LPARAM)L"冒险");
  351. SendMessage(hGMtype, CB_ADDSTRING, 0, (LPARAM)L"生存");
  352. SendMessage(hGMtype, CB_ADDSTRING, 0, (LPARAM)L"创造");
  353. SendMessage(hGMtype, CB_ADDSTRING, 0, (LPARAM)L"旁观");
  354. HWND hPlayerOK = CreateWindow(
  355. L"BUTTON", L"提交",
  356. WS_VISIBLE | WS_CHILD,
  357. 220, 280, 110, 40,
  358. hWnd1, (HMENU)ID_FC_Player_OK,
  359. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  360. );
  361. }
  362. break;
  363. case WM_COMMAND:
  364. {
  365. WORD wmId = LOWORD(wParam);
  366. WORD wmEvent = HIWORD(wParam);
  367. if (wmEvent == CBN_SELCHANGE && wmId == ID_FC_Player_TYPE)
  368. {
  369. int selected = SendMessage(GetDlgItem(hWnd1, ID_FC_Player_TYPE), CB_GETCURSEL, 0, 0);
  370. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_GM), SW_HIDE);
  371. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_TEXT), SW_HIDE);
  372. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_GM_s), SW_HIDE);
  373. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_TEXT_s), SW_HIDE);
  374. switch (selected)
  375. {
  376. case 3:
  377. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_GM), SW_SHOW);
  378. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_GM_s), SW_SHOW);
  379. break;
  380. case 5:
  381. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_TEXT), SW_SHOW);
  382. ShowWindow(GetDlgItem(hWnd1, ID_FC_Player_TEXT_s), SW_SHOW);
  383. break;
  384. }
  385. }
  386. switch (wmId)
  387. {
  388. case ID_FC_Player_OK:
  389. {
  390. char ID[512] = {0};
  391. char TEXT[2048] = { 0 };
  392. GetWindowTextA(GetDlgItem(hWnd1, ID_FC_Player_LIST), ID, 512);
  393. GetWindowTextA(GetDlgItem(hWnd1, ID_FC_Player_TEXT), TEXT, 512);
  394. int type = SendMessage(GetDlgItem(hWnd1, ID_FC_Player_TYPE), CB_GETCURSEL, 0, 0);
  395. switch (type)
  396. {
  397. case 0:
  398. {
  399. SendCommand_WithID("kick", ID, "");
  400. break;
  401. }
  402. case 1:
  403. {
  404. SendCommand_WithID("op", ID, "");
  405. break;
  406. }
  407. case 2:
  408. {
  409. SendCommand_WithID("deop", ID, "");
  410. break;
  411. }
  412. case 3:
  413. {
  414. int gm = SendMessage(GetDlgItem(hWnd1, ID_FC_Player_GM), CB_GETCURSEL, 0, 0);
  415. switch (gm)
  416. {
  417. case 0:
  418. {
  419. SendCommand_WithID("gamemode 2", ID, "");
  420. break;
  421. }
  422. case 1:
  423. {
  424. SendCommand_WithID("gamemode 0", ID, "");
  425. break;
  426. }
  427. case 2:
  428. {
  429. SendCommand_WithID("gamemode 1", ID, "");
  430. break;
  431. }
  432. case 3:
  433. {
  434. SendCommand_WithID("gamemode 3", ID, "");
  435. break;
  436. }
  437. default:
  438. break;
  439. }
  440. }
  441. case 4:
  442. {
  443. SendCommand_WithID("kill", ID, "");
  444. break;
  445. }
  446. case 5:
  447. SendCommand_WithID("msg", ID, TEXT);
  448. break;
  449. }
  450. MessageBox(hWnd1, L"已发送指令", TITLE, MB_OK);
  451. DestroyWindow(hWnd1);
  452. break;
  453. }
  454. default:
  455. break;
  456. }
  457. break;
  458. }
  459. case WM_CLOSE:
  460. DestroyWindow(hWnd1);
  461. break;
  462. case WM_DESTROY:
  463. hPlayer = NULL;
  464. break;
  465. default:
  466. return DefWindowProc(hWnd1, msg, wParam, lParam);
  467. }
  468. return 0;
  469. }
  470. LRESULT CALLBACK BkProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam) {
  471. switch(msg)
  472. {
  473. case WM_CREATE:
  474. {
  475. HWND hLabel_1 = CreateWindow(
  476. L"STATIC", L"备份选项",
  477. WS_VISIBLE | WS_CHILD,
  478. 20, 20, 100, 30,
  479. hWnd1, NULL,
  480. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  481. );
  482. HWND hLevelBk = CreateWindow(
  483. L"BUTTON", L"备份存档",
  484. WS_VISIBLE | WS_CHILD,
  485. 30,70, 110, 40,
  486. hWnd1, H_ ID_FILE_Bk_Level,
  487. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  488. );
  489. HWND hAllBk = CreateWindow(
  490. L"BUTTON", L"备份全部文件",
  491. WS_VISIBLE | WS_CHILD,
  492. 150,70, 170, 40,
  493. hWnd1, H_ ID_FILE_Bk_All,
  494. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  495. );
  496. HWND hBkCover = CreateWindow(
  497. L"BUTTON", L"覆盖相应先前备份",
  498. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  499. 30, 125, 210, 40,
  500. hWnd1, H_ ID_FILE_Bk_Cover,
  501. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  502. );
  503. HWND hLabel_2 = CreateWindow(
  504. L"STATIC", L"还原选项(应用会自动识别类型)",
  505. WS_VISIBLE | WS_CHILD,
  506. 20, 200, 290, 30,
  507. hWnd1, NULL,
  508. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  509. );
  510. HWND hRec = CreateWindow(
  511. L"BUTTON", L"选择文件",
  512. WS_VISIBLE | WS_CHILD,
  513. 30, 245, 110, 40,
  514. hWnd1, H_ ID_FILE_Bk_Open,
  515. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  516. );
  517. break;
  518. }
  519. case WM_COMMAND:
  520. {
  521. WORD wmId = LOWORD(wParam);
  522. switch (wmId)
  523. {
  524. case ID_FILE_Bk_Level:
  525. break;
  526. case ID_FILE_Bk_All:
  527. break;
  528. case ID_FILE_Bk_Open:
  529. break;
  530. }
  531. break;
  532. }
  533. case WM_CLOSE:
  534. DestroyWindow(hWnd1);
  535. break;
  536. case WM_DESTROY:
  537. hBackup = NULL;
  538. break;
  539. default:
  540. return DefWindowProc(hWnd1, msg, wParam, lParam);
  541. }
  542. return 0;
  543. }