+\r
+\r
+int WINAPI\r
+WinMain(HINSTANCE hInstance,\r
+ HINSTANCE hPrevInstance,\r
+ LPSTR lpCmdLine,\r
+ int nCmdShow)\r
+//int main(int argc, char **argv)\r
+{\r
+ hInstance = GetModuleHandle(0);\r
+\r
+ icon_white = LoadIconA(hInstance, MAKEINTRESOURCEA(IDI_ICON_WHITE));\r
+ icon_green = LoadIconA(hInstance, MAKEINTRESOURCEA(IDI_ICON_GREEN));\r
+ icon_red = LoadIconA(hInstance, MAKEINTRESOURCEA(IDI_ICON_RED));\r
+\r
+ win::Window window("Title", "MyWindowClass", hInstance);\r
+ hwnd = window.hwnd;\r
+\r
+ niData.cbSize = sizeof(niData);\r
+ niData.uID = 12345;\r
+ niData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;\r
+ niData.hIcon = icon_white;\r
+ niData.hWnd = window.hwnd;\r
+ niData.uCallbackMessage = ICON_MSG;\r
+ niData.uVersion = NOTIFYICON_VERSION_4;\r
+\r
+ window.handlers[WM_SIZE].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ if (wParam == SIZE_MINIMIZED) {\r
+ ShowNotificationIcon();\r
+ ShowWindow(hwnd, false);\r
+ }\r
+ });\r
+ window.handlers[WM_DESTROY].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ HideNotificationIcon();\r
+ }); \r
+ window.handlers[ICON_MSG].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ if (LOWORD(lParam) == NIN_SELECT) {\r
+ HideNotificationIcon();\r
+ ShowWindow(hwnd, true);\r
+ SetForegroundWindow(hwnd);\r
+ SetActiveWindow(hwnd);\r
+ }\r
+ });\r
+\r
+ window.handlers[WM_GETMINMAXINFO].push_back([](HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {\r
+ MINMAXINFO *mmInfo = (MINMAXINFO*)lParam;\r
+ mmInfo->ptMinTrackSize.x = 400;\r
+ mmInfo->ptMinTrackSize.y = 200;\r
+ });\r