查看代码
#include <Windows.h>
//画点
void PaintSetPixel(HDC hdc) {
for (short i = 0; i < 20; i++)
{
SetPixel(hdc, 30, 30 + i, RGB(0, 0, 255));
}
}
//画线
void PaintLine(HDC hdc) {
//从坐标(50,50)画到坐标(200,50)
MoveToEx(hdc, 50, 50, NULL);
LineTo(hdc, 200, 50);
}
//画一个矩形
void PaintRect(HDC hdc) {
//绘制普通举矩形:从左上角坐标(100,00)到右下角坐标(200,200)
//Rectangle(hdc, 100, 100, 200, 200);
//绘制圆角矩形 从左上角坐标(100,00)到右下角坐标(200,200) (30,30)表示圆角宽度和高度
RoundRect(hdc, 100, 100, 600, 600, 30, 30);
}
//画圆 椭圆
void PaintEllipse(HDC hdc) {
//圆形左上角坐标(50,50) 右下角坐标(100,100)
Ellipse(hdc, 50, 50, 100, 300);
}
//画弧线
void PaintArc(HDC hdc) {
Arc(hdc, 100, 100, 400, 400, 150, 50, 50, 150);
}
//画扇形
void PaintPie(HDC hdc) {
Pie(hdc, 100, 100, 400, 400, 300, 50, 50, 300);
}
//自定义过程函数
//参数 HWND:窗口的句柄 message:消息ID 附加消息信息 附加消息信息
LRESULT CALLBACK MyWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
//PaintLine(hdc);
//PaintSetPixel(hdc);
//PaintRect(hdc);
//PaintEllipse(hdc);
//PaintArc(hdc);
PaintPie(hdc);
EndPaint(hwnd, &ps);
break;
}
default:
return DefWindowProcW(hwnd, message, wParam, lParam);
}
return DefWindowProcW(hwnd, message, wParam, lParam);
}
//void OnPaint(HDC hdc) {
// Graphics graphics(hdc);
//}
int WINAPI WinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nShowCmd) {
//声明窗口类
WNDCLASS wndClass;
//CS_NOCLOSE 禁止系统菜单的关闭选项
wndClass.style = CS_HREDRAW | CS_VREDRAW;//窗口类样式
wndClass.lpfnWndProc = MyWndProc;//窗口过程函数
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 = L"caoruipeng";//窗口类名称
//注册窗口类
if (!RegisterClass(&wndClass)) {
MessageBox(NULL, L"无效的窗口类", L"错误提示", MB_OK);
return FALSE;
}
//创建窗口
HWND hwnd = CreateWindow(L"caoruipeng",//窗口类名称 注册窗口类的名称
L"第一个窗口程序",//窗口标题
WS_OVERLAPPEDWINDOW,//窗口样式
CW_USEDEFAULT,//窗口位置x坐标
CW_USEDEFAULT,//窗口位置y坐标
CW_USEDEFAULT,//窗口宽度
CW_USEDEFAULT,//窗口高度
NULL,//此时窗口无父窗口
NULL,//此时窗口无子菜单
hInstance,//创建窗口的应用程序句柄
NULL
);
//展示窗口
ShowWindow(hwnd, nShowCmd);
//绘制用户区域
UpdateWindow(hwnd);
MSG msg;
//如果检索WM_QUIT消息 返回0,其他返回非0 返回0的时候,会跳出循环,结束程序
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//翻译消息
//将消息分发给窗口过程函数 返回窗口过程函数返回的值 通常忽略该值
DispatchMessage(&msg);
}
return msg.wParam;
}