MAIN.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #include "Win32.h"
  2. #include "ID.h"
  3. #include "Function.h"
  4. HWND hWnd = NULL;
  5. //Basic info
  6. static TCHAR szWindowClass[] = _T("ufb");
  7. static TCHAR szTitle[] = TITLE;
  8. HINSTANCE hInst;
  9. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  10. int WINAPI WinMain(
  11. _In_ HINSTANCE hInstance,
  12. _In_opt_ HINSTANCE hPrevInstance,
  13. _In_ LPSTR lpCmdLine,
  14. _In_ int nCmdShow
  15. )
  16. {
  17. // Window config
  18. WNDCLASSEX wcex;
  19. wcex.cbSize = sizeof(WNDCLASSEX);
  20. wcex.style = CS_HREDRAW | CS_VREDRAW;
  21. wcex.lpfnWndProc = WndProc;
  22. wcex.cbClsExtra = 0;
  23. wcex.cbWndExtra = 0;
  24. wcex.hInstance = hInstance;
  25. wcex.hIcon = LoadIcon(wcex.hInstance, IDI_APPLICATION);
  26. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  27. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  28. wcex.lpszMenuName = NULL;
  29. wcex.lpszClassName = szWindowClass;
  30. wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);
  31. Err(RegisterClassEx(&wcex), szTitle,
  32. _T("Call to RegisterClassEx failed!"));
  33. //Create window
  34. hInst = hInstance;
  35. hWnd = CreateWindowEx(
  36. WS_EX_OVERLAPPEDWINDOW,
  37. szWindowClass, szTitle,
  38. WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
  39. CW_USEDEFAULT, CW_USEDEFAULT,
  40. 530, 560, NULL, NULL,
  41. hInstance, NULL
  42. );
  43. Err(hWnd, szTitle,
  44. _T("Call to CreateWindow failed!"));
  45. //Create controls
  46. HWND hLabel_1 = CreateWindow(
  47. L"STATIC", L"基础操作",
  48. WS_VISIBLE | WS_CHILD,
  49. 30, 55, 90, 30,
  50. hWnd, NULL,
  51. (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), NULL
  52. );
  53. HWND hStart = CreateWindow(
  54. L"BUTTON", L"启动",
  55. WS_VISIBLE | WS_CHILD,
  56. 30, 100, 70, 40,
  57. hWnd, (HMENU)ID_START,
  58. (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), NULL
  59. );
  60. HWND hStop = CreateWindow(
  61. L"BUTTON", L"启动",
  62. WS_VISIBLE | WS_CHILD,
  63. 30, 100, 70, 40,
  64. hWnd, (HMENU)ID_START,
  65. (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), NULL
  66. );
  67. //Font
  68. HFONT hFont = CreateFont(
  69. -40,
  70. 0, 0, 0,
  71. FW_NORMAL, FALSE, FALSE, FALSE,
  72. DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
  73. ANTIALIASED_QUALITY,
  74. FF_ROMAN,
  75. L"Arial"
  76. );
  77. SendMessage(hWnd, WM_SETFONT, (WPARAM)hFont, TRUE);
  78. //Visibility & Loop
  79. ShowWindow(hWnd,
  80. nCmdShow);
  81. UpdateWindow(hWnd);
  82. MSG msg;
  83. while (GetMessage(&msg, NULL, 0, 0))
  84. {
  85. TranslateMessage(&msg);
  86. DispatchMessage(&msg);
  87. }
  88. return (int)msg.wParam;
  89. }
  90. //Behavior of controls
  91. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  92. {
  93. PAINTSTRUCT ps;
  94. HDC hdc;
  95. TCHAR greeting[] = _T("by xksyu2021");
  96. switch (message)
  97. {
  98. case WM_PAINT:
  99. hdc = BeginPaint(hWnd, &ps);
  100. TextOut(hdc,
  101. 5, 5,
  102. greeting, _tcslen(greeting));
  103. EndPaint(hWnd, &ps);
  104. break;
  105. case WM_COMMAND:
  106. {
  107. WORD wmId = LOWORD(wParam);
  108. switch (wmId)
  109. {
  110. case ID_START:
  111. StartBDS();
  112. }
  113. }
  114. break;
  115. case WM_DESTROY:
  116. PostQuitMessage(0);
  117. break;
  118. default:
  119. return DefWindowProc(hWnd, message, wParam, lParam);
  120. break;
  121. }
  122. return 0;
  123. }