int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { HWND hwnd; MSG msg; Console console; if (cmdline_load(__argc, __argv) != 1) { return -1; } if (cmdline_get_console()){ console.RedirectIOToConsole(); return app_main(__argc, __argv); } if (LoadLibraryW(L"RichEd20.dll") == NULL) { return -1; } WNDCLASSEXW wc = {}; wc.cbSize = sizeof(WNDCLASSEXW); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = sizeof(LPVOID); wc.hInstance = hInstance; wc.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(ID_ICON1)); wc.hCursor = LoadCursorW(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.lpszMenuName = MAKEINTRESOURCEW(ID_MENU); wc.lpszClassName = L"BnetWndClass"; if (!RegisterClassExW(&wc)) RegisterClassW((LPWNDCLASS)&wc.style); hwnd = CreateWindowExW(0L, L"BnetWndClass", L"Diablo II Character Server", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, LoadMenuW(hInstance, MAKEINTRESOURCEW(ID_MENU)), hInstance, NULL); if (hwnd) { ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); } while (GetMessageW(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessageW(&msg); if (!d2cs_running && d2cs_run && gui_run) { d2cs_running = TRUE; _beginthread(pvpgn::d2cs::d2cs, 0, NULL); } if (!gui_run && !d2cs_running) { KillTrayIcon(hwnd); exit(0); } } return ((int)msg.wParam); }