childProc.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  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(hWnd,
  244. L"是否要清除所有日志?", TITLE,
  245. MB_OKCANCEL | MB_APPLMODAL | MB_ICONWARNING)
  246. == 1)
  247. {
  248. ClearLog();
  249. SetWindowText(GetDlgItem(hWnd1, ID_LOG), _T("Null"));
  250. break;
  251. }
  252. }
  253. }
  254. case WM_TIMER:
  255. Log(GetDlgItem(hLog, ID_LOG));
  256. break;
  257. case WM_CLOSE:
  258. break;
  259. case WM_DESTROY:
  260. KillTimer(hWnd1, 1);
  261. hLog = NULL;
  262. break;
  263. default:
  264. return DefWindowProc(hWnd1, msg, wParam, lParam);
  265. }
  266. return 0;
  267. }
  268. LRESULT CALLBACK PlayerProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam) {
  269. switch (msg) {
  270. case WM_CREATE:
  271. {
  272. HFONT hFont1 = Font();
  273. HWND hWeaSet = CreateWindow(
  274. L"BUTTON", L"快速设定",
  275. WS_VISIBLE | WS_CHILD | BS_GROUPBOX,
  276. 20, 20, 330, 150,
  277. hWnd1, NULL,
  278. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  279. );
  280. HWND hWeaOK = CreateWindow(
  281. L"BUTTON", L"提交",
  282. WS_VISIBLE | WS_CHILD,
  283. 250, 300, 110, 40,
  284. hWnd1, (HMENU)ID_FC_Player_OK,
  285. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  286. );
  287. }
  288. break;
  289. case WM_COMMAND:
  290. {
  291. WORD wmId = LOWORD(wParam);
  292. switch (wmId)
  293. {
  294. case ID_FC_Player_OK:
  295. DestroyWindow(hWnd1);
  296. break;
  297. default:
  298. break;
  299. }
  300. break;
  301. }
  302. case WM_CLOSE:
  303. DestroyWindow(hWnd1);
  304. break;
  305. case WM_DESTROY:
  306. hPlayer = NULL;
  307. break;
  308. default:
  309. return DefWindowProc(hWnd1, msg, wParam, lParam);
  310. }
  311. return 0;
  312. return 0;
  313. }