如何使用c ++在Windows OS中简单地将图像绘制到窗口中

时间:2016-02-21 03:16:50

标签: c++ graphics rendering gdi+

我正在尝试学习图形编程的基础知识(一般来说,不是专门的窗口),并且想要使用最简单,封装最多的方法。我有以下代码,只想在屏幕上绘制图像。

注意:游戏 - >更新是对我自己的类的调用,意味着主游戏。我想在那里处理与我的游戏有关的一切。这就是它在游戏循环中的原因。

#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越少越好。

感谢阅读。

0 个答案:

没有答案