首页
搜索 搜索
聚焦

每日关注!一个最简单的窗口函数的解释 WinMain

2023-06-04 06:15:50 哔哩哔哩

代码解释写在了csdn上,链接:https://blog.csdn.net/m0_56376166/article/details/131019690?spm=1001.2014.3001.5502

#include <windows.h>

#include <gdiplus.h>


(相关资料图)

#pragma comment (lib,"Gdiplus.lib")

using namespace Gdiplus;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT("LoadJPEGImage");

HWND         hwnd;

MSG          msg;

WNDCLASS     wndclass;

wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

wndclass.hInstance = hInstance;

wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);

wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.lpszMenuName = NULL;

wndclass.lpszClassName = szAppName;

if (!RegisterClass(&wndclass))

{

MessageBox(NULL, TEXT("This program requires Windows NT!"),

szAppName, MB_ICONERROR);

return 0;

}

hwnd = CreateWindow(szAppName,                  // window class name

TEXT("Load JPEG Image"), // window caption

WS_OVERLAPPEDWINDOW,        // window style

CW_USEDEFAULT,              // initial x position

CW_USEDEFAULT,              // initial y position

CW_USEDEFAULT,              // initial x size

CW_USEDEFAULT,              // initial y size

NULL,                       // parent window handle

NULL,                       // window menu handle

hInstance,                  // program instance handle

NULL);                      // creation parameters

ShowWindow(hwnd, iCmdShow);

UpdateWindow(hwnd);

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

static Image* pImage = NULL;

switch (message)

{

case WM_CREATE:

{

// 加载JPEG图像

pImage = Image::FromFile(L"image.jpg");

if (pImage->GetLastStatus() != Ok)

{

MessageBox(hwnd, L"Failed to load image.jpg", L"Error", MB_OK | MB_ICONERROR);

return -1;

}

break;

}

case WM_PAINT:

{

PAINTSTRUCT ps;

HDC hdc = BeginPaint(hwnd, &ps);

// 绘制图像

Graphics graphics(hdc);

graphics.DrawImage(pImage, 0, 0);

EndPaint(hwnd, &ps);

break;

}

case WM_DESTROY:

delete pImage;

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hwnd, message, wParam, lParam);

}

————————————————

版权声明:本文为CSDN博主「m0_56376166」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/m0_56376166/article/details/131019690