一個最簡單的窗口函數(shù)的解釋 WinMain
代碼解釋寫在了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);
}
————————————————
版權(quán)聲明:本文為CSDN博主「m0_56376166」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_56376166/article/details/131019690