305{
306 WNDCLASSEX wc;
307 DEVMODE dmScreenSettings;
308 int posX, posY;
309
310 Logger::Get().
Log(
"Initializing windows", __FILE__, __LINE__, Logger::LogLevel::Initialize);
311
312 application_handle = this;
313
314
315 hinstance_ = GetModuleHandle(NULL);
316
317
318 application_name_ = L"Khaotic Engine";
319
320
321 wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
322 wc.lpfnWndProc = wnd_proc;
323 wc.cbClsExtra = 0;
324 wc.cbWndExtra = 0;
325 wc.hInstance = hinstance_;
326 wc.hIcon = LoadIcon(hinstance_,MAKEINTRESOURCE(IDI_ICON1));
327 wc.hIconSm = LoadIcon(hinstance_, MAKEINTRESOURCE(IDI_ICON1));
328 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
329 wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
330 wc.lpszMenuName = NULL;
331 wc.lpszClassName = application_name_;
332 wc.cbSize = sizeof(WNDCLASSEX);
333
334
335 RegisterClassEx(&wc);
336
337
338 screenWidth = GetSystemMetrics(SM_CXSCREEN);
339 screenHeight = GetSystemMetrics(SM_CYSCREEN);
340
341
342 if (full_screen)
343 {
344
345 memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));
346 dmScreenSettings.dmSize = sizeof(dmScreenSettings);
347 dmScreenSettings.dmPelsWidth = (unsigned long)screenWidth;
348 dmScreenSettings.dmPelsHeight = (unsigned long)screenHeight;
349 dmScreenSettings.dmBitsPerPel = 32;
350 dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
351
352
353 ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
354
355
356 posX = posY = 0;
357 }
358 else
359 {
360
361 screenWidth = 1600;
362 screenHeight = 900;
363
364
365 posX = (GetSystemMetrics(SM_CXSCREEN) - screenWidth) / 2;
366 posY = (GetSystemMetrics(SM_CYSCREEN) - screenHeight) / 2;
367 }
368
369
370 hwnd_ = CreateWindowEx(WS_EX_APPWINDOW, application_name_, application_name_,
371 WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
372 posX, posY, screenWidth, screenHeight, NULL, NULL, hinstance_, NULL);
373
374
375 ShowWindow(hwnd_, SW_SHOW);
376 SetForegroundWindow(hwnd_);
377 SetFocus(hwnd_);
378
379
380 ShowCursor(true);
381
382
383 DragAcceptFiles(hwnd_, TRUE);
384
385 return;
386}