childProc.cpp 15 KB

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