MCPcopy Create free account
hub / github.com/OneLoneCoder/olcPixelGameEngine / CreateWindowPane

Method CreateWindowPane

olcPixelGameEngine.h:6735–6827  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6733 }
6734
6735 virtual olc::rcode CreateWindowPane(const olc::vi2d& vWindowPos, olc::vi2d& vWindowSize, bool bFullScreen) override
6736 {
6737 WNDCLASS wc;
6738 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
6739 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
6740 wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
6741 wc.hInstance = GetModuleHandle(nullptr);
6742 wc.lpfnWndProc = olc_WindowEvent;
6743 wc.cbClsExtra = 0;
6744 wc.cbWndExtra = 0;
6745 wc.lpszMenuName = nullptr;
6746 wc.hbrBackground = nullptr;
6747 wc.lpszClassName = olcT("OLC_PIXEL_GAME_ENGINE");
6748 RegisterClass(&wc);
6749
6750 vWinPos = vWindowPos;
6751 vWinSize = vWindowSize;
6752
6753 // Define window furniture
6754 DWORD dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
6755 DWORD dwStyle = WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_THICKFRAME;
6756
6757 olc::vi2d vTopLeft = vWindowPos;
6758
6759 // Handle Fullscreen
6760 if (bFullScreen)
6761 {
6762 dwExStyle = 0;
6763 dwStyle = WS_VISIBLE | WS_POPUP;
6764 HMONITOR hmon = MonitorFromWindow(olc_hWnd, MONITOR_DEFAULTTONEAREST);
6765 MONITORINFO mi = { sizeof(mi) };
6766 if (!GetMonitorInfo(hmon, &mi)) return olc::rcode::FAIL;
6767 vWindowSize = { mi.rcMonitor.right, mi.rcMonitor.bottom };
6768 vTopLeft.x = 0;
6769 vTopLeft.y = 0;
6770 }
6771
6772 // Keep client size as requested
6773 RECT rWndRect = { 0, 0, vWindowSize.x, vWindowSize.y };
6774 AdjustWindowRectEx(&rWndRect, dwStyle, FALSE, dwExStyle);
6775 int width = rWndRect.right - rWndRect.left;
6776 int height = rWndRect.bottom - rWndRect.top;
6777
6778 olc_hWnd = CreateWindowEx(dwExStyle, olcT("OLC_PIXEL_GAME_ENGINE"), olcT(""), dwStyle,
6779 vTopLeft.x, vTopLeft.y, width, height, NULL, NULL, GetModuleHandle(nullptr), this);
6780
6781 DragAcceptFiles(olc_hWnd, true);
6782
6783 // Create Keyboard Mapping
6784 mapKeys[0x00] = Key::NONE;
6785 mapKeys[0x41] = Key::A; mapKeys[0x42] = Key::B; mapKeys[0x43] = Key::C; mapKeys[0x44] = Key::D; mapKeys[0x45] = Key::E;
6786 mapKeys[0x46] = Key::F; mapKeys[0x47] = Key::G; mapKeys[0x48] = Key::H; mapKeys[0x49] = Key::I; mapKeys[0x4A] = Key::J;
6787 mapKeys[0x4B] = Key::K; mapKeys[0x4C] = Key::L; mapKeys[0x4D] = Key::M; mapKeys[0x4E] = Key::N; mapKeys[0x4F] = Key::O;
6788 mapKeys[0x50] = Key::P; mapKeys[0x51] = Key::Q; mapKeys[0x52] = Key::R; mapKeys[0x53] = Key::S; mapKeys[0x54] = Key::T;
6789 mapKeys[0x55] = Key::U; mapKeys[0x56] = Key::V; mapKeys[0x57] = Key::W; mapKeys[0x58] = Key::X; mapKeys[0x59] = Key::Y;
6790 mapKeys[0x5A] = Key::Z;
6791
6792 mapKeys[VK_F1] = Key::F1; mapKeys[VK_F2] = Key::F2; mapKeys[VK_F3] = Key::F3; mapKeys[VK_F4] = Key::F4;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected