]> gitweb.ps.run Git - autorec/blob - src/win.cpp
ws connect works
[autorec] / src / win.cpp
1 #pragma comment(linker,"\"/manifestdependency:type='win32' \\r
2 name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \\r
3 processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")\r
4 \r
5 #include <windows.h>\r
6 #include <CommCtrl.h>\r
7 \r
8 HWND hwndButton1;\r
9 HWND hwndList1;\r
10 \r
11 const char g_szClassName[] = "MyWindowClass";\r
12 \r
13 LRESULT CALLBACK\r
14 WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)\r
15 {\r
16   switch (msg) {\r
17     case WM_CLOSE:\r
18       DestroyWindow(hwnd);\r
19       break;\r
20     case WM_DESTROY:\r
21       PostQuitMessage(0);\r
22       break;\r
23     case WM_COMMAND:\r
24       if (HIWORD(wParam) == BN_CLICKED) {\r
25         if ((HWND)lParam == hwndButton1) {\r
26           SendMessage(hwndList1, LB_ADDSTRING, 0, (LPARAM)"Hello");\r
27         }\r
28       }\r
29       break;\r
30     case WM_NOTIFY:\r
31       break;\r
32     default:\r
33       return DefWindowProc(hwnd, msg, wParam, lParam);\r
34   }\r
35   return 0;\r
36 }\r
37 \r
38 int WINAPI\r
39 WinMain(HINSTANCE hInstance,\r
40         HINSTANCE hPrevInstance,\r
41         LPSTR lpCmdLine,\r
42         int nCmdShow)\r
43 {\r
44   WNDCLASSEX wc;\r
45   HWND hwnd;\r
46   MSG Msg;\r
47 \r
48   // Step 1: Registering the Window Class\r
49   wc.cbSize = sizeof(WNDCLASSEX);\r
50   wc.style = 0;\r
51   wc.lpfnWndProc = WndProc;\r
52   wc.cbClsExtra = 0;\r
53   wc.cbWndExtra = 0;\r
54   wc.hInstance = hInstance;\r
55   wc.hIcon = LoadIcon(nullptr, IDI_APPLICATION);\r
56   wc.hCursor = LoadCursor(nullptr, IDC_ARROW);\r
57   wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);\r
58   wc.lpszMenuName = nullptr;\r
59   wc.lpszClassName = g_szClassName;\r
60   wc.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);\r
61 \r
62 \r
63   if (!RegisterClassEx(&wc)) {\r
64     MessageBox(nullptr,\r
65                "Window Registration Failed!",\r
66                "Error!",\r
67                MB_ICONEXCLAMATION | MB_OK);\r
68     return 0;\r
69   }\r
70 \r
71   // Step 2: Creating the Window\r
72   hwnd = CreateWindowA(g_szClassName,\r
73                         "The title of my window",\r
74                         WS_OVERLAPPEDWINDOW,\r
75                         CW_USEDEFAULT,\r
76                         CW_USEDEFAULT,\r
77                         CW_USEDEFAULT,\r
78                         CW_USEDEFAULT,\r
79                         nullptr,\r
80                         nullptr,\r
81                         hInstance,\r
82                         nullptr);\r
83 \r
84   HWND tab = CreateWindowExA(0, WC_TABCONTROLA, "", WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, 10, 10, 300, 300, hwnd, nullptr, nullptr, nullptr);\r
85   hwndButton1 = CreateWindowExA(0, WC_BUTTONA, "OK", WS_VISIBLE | WS_CHILD, 10, 10, 100, 100, tab, nullptr, nullptr, nullptr);\r
86   hwndList1   = CreateWindowExA(0, WC_LISTBOXA, "OK", WS_VISIBLE | WS_CHILD | WS_BORDER | WS_VSCROLL, 110, 10, 100, 100, tab, nullptr, nullptr, nullptr);\r
87 \r
88   TCITEMA tie;\r
89   tie.mask = TCIF_TEXT;\r
90   tie.pszText = "Hallo";\r
91   TabCtrl_InsertItem(tab, 0, &tie);\r
92   tie.mask = TCIF_TEXT;\r
93   tie.pszText = "Ciao";\r
94   TabCtrl_InsertItem(tab, 1, &tie);\r
95 \r
96   if (hwnd == nullptr) {\r
97     MessageBox(\r
98       nullptr, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);\r
99     return 0;\r
100   }\r
101 \r
102   ShowWindow(hwnd, nCmdShow);\r
103   \r
104   UpdateWindow(hwnd);\r
105 \r
106   EnumChildWindows(hwnd, [](HWND hwnd, LPARAM lParam) -> BOOL {\r
107     HFONT guiFont = (HFONT) GetStockObject(DEFAULT_GUI_FONT);\r
108     SendMessage(hwnd, WM_SETFONT, (WPARAM)guiFont, MAKELPARAM(TRUE, 0));\r
109     return TRUE;\r
110   }, 0);\r
111 \r
112   // Step 3: The Message Loop\r
113   while (GetMessage(&Msg, nullptr, 0, 0) > 0) {\r
114     TranslateMessage(&Msg);\r
115     DispatchMessage(&Msg);\r
116   }\r
117   return Msg.wParam;\r
118 }