Untitled
unknown
c_cpp
a year ago
2.6 kB
8
Indexable
// Program.CPP #include <iostream> #include "Window.h" int main() { std::cout << "Creating Window\n"; Window* pWindow = new Window(); bool running = true; while (running) { if (pWindow->ProcessMessages()) { std::cout << "Closing Window\n"; running = false; } // Render Sleep(10); } delete pWindow; return 0; } // Window.H #include <Windows.h> LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMSG, WPARAM wParam, LPARAM lParam); class Window { public: Window(); Window(const Window&) = delete; Window& operator = (const Window&) = delete; ~Window(); bool ProcessMessages(); private: HINSTANCE m_hInstance; HWND m_hWnd; }; // Window.Cpp #include "Window.h" LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } Window::Window() : m_hInstance(GetModuleHandle(nullptr)) { const wchar_t* CLASS_NAME = L"Cales Window Class"; WNDCLASS wndClass = {}; wndClass.lpszClassName = CLASS_NAME; wndClass.hInstance = m_hInstance; wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.lpfnWndProc = WindowProc; RegisterClass(&wndClass); DWORD style = WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU; int width = 640; int height = 480; RECT rect; rect.left = 250; rect.top = 250; rect.right = rect.left + width; rect.bottom = rect.top + height; AdjustWindowRect(&rect, style, false); m_hWnd = CreateWindowEx( 0, CLASS_NAME, L"Title", style, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, NULL, NULL, m_hInstance, NULL ); ShowWindow(m_hWnd, SW_SHOW); } Window::~Window() { const wchar_t* CLASS_NAME = L"Cales Window Class"; UnregisterClass(CLASS_NAME, m_hInstance); } bool Window::ProcessMessages() { MSG msg = {}; while (PeekMessage(&msg, nullptr, 0u, 0u, PM_REMOVE)) { if (msg.message == WM_QUIT) { return false; } TranslateMessage(&msg); DispatchMessage(&msg); } return true; }
Editor is loading...
Leave a Comment