| 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; |
nothing calls this directly
no outgoing calls
no test coverage detected