我正在尝试学习图形编程的基础知识(一般来说,不是专门的窗口),并且想要使用最简单,封装最多的方法。我有以下代码,只想在屏幕上绘制图像。
注意:游戏 - >更新是对我自己的类的调用,意味着主游戏。我想在那里处理与我的游戏有关的一切。这就是它在游戏循环中的原因。
#include <Windows.h>
#include "Asteroid_Game.h"
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DESTROY) { PostQuitMessage(0); return 0; }
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmd, int nCmdShow)
{
WNDCLASSEX windowClass;
ZeroMemory(&windowClass, sizeof(WNDCLASSEX));
windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
windowClass.hInstance = hInstance;
windowClass.lpfnWndProc = WindowProc;
windowClass.lpszClassName = "MainWindow";
windowClass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClassEx(&windowClass);
RECT rect = { 0, 0, 1000, 1000 };
AdjustWindowRectEx(&rect, WS_OVERLAPPEDWINDOW, false, WS_EX_OVERLAPPEDWINDOW);
HWND windowHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "MainWindow", "Asteroids - Pre-Alpha 0.1", WS_OVERLAPPEDWINDOW, 100, 100,
rect.right - rect.left, rect.bottom - rect.top, NULL, NULL, hInstance, 0);
if (!windowHandle)return -1;
ShowWindow(windowHandle, nCmdShow);
MSG message;
message.message = WM_NULL;
Asteroids* game = new Asteroids();
while (message.message != WM_QUIT)
{
if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
DispatchMessage(&message);
else
{
// Game Loop:
game->update();
}
delete game;
return 0;
}
我想画一个图像,比如说“image.png”。 我需要知道语法。 请记住,我希望尽可能保持封装。换句话说,Windows API越少越好。
感谢阅读。