概要:
HDC hdc;
PAINTSTRUCT ps;
HBRUSH Purple_Brush= CreateSolidBrush(RGB(102,0,204));
HBRUSH White_Brush= CreateSolidBrush(RGB(255,255,255));//定义画刷
关键函数:
1、 BeginPaint( HWND hWnd, LPPAINTSTRUCT lpPaint);
)//BeginPaint()函数为指定窗口进行绘图工作的准备,并用将和绘图有关的信息填充到一个PAINTSTRUCT结构中
hdc = BeginPaint(hWnd,&ps);
2、EndPaint( HWND hWnd,CONST PAINTSTRUCT *lpPaint)//EndPaint()函数标记指定窗口的绘画过程结束;
EndPaint (hWnd, &ps) ;
3、SelectObject(hdc,Purple_Brush);
DeleteObject(Purple_Brush);
hdc = BeginPaint(hWnd,&ps);
//1.选择紫色的画刷
SelectObject(hdc,Purple_Brush);
//2.画一个矩形
Rectangle( hdc, 50, 50, 450, 450);
//3.选择白色的画刷
SelectObject(hdc,White_Brush);
//4.画一个圆
Ellipse( hdc, 100, 100,300,300);
//5.释放紫色画刷和白色画刷
DeleteObject(Purple_Brush);
DeleteObject(White_Brush);
EndPaint (hWnd, &ps) ;
详细代码如下:
#include <Windows.h>
LRESULT CALLBACK MyWNDPROC(HWND, UINT, WPARAM, LPARAM);
int CALLBACK WinMain( HINSTANCE hInstance, //当前应用程序实例的句柄
HINSTANCE hPrevInstance, //应用程序前一个实例的句柄
LPSTR lpCmdLine, //命令行参数
int nCmdShow) //决定这个窗口显示方式的参数
{ HWND hWnd;
MSG msg;
LPPAINTSTRUCT ps ;
1.设计窗口
WNDCLASSEX ex; // WNDCLASSEX是结构体 ,该语句定义了一个为ex的 结构体
ex.style = CS_HREDRAW | CS_VREDRAW; // 窗口水平刷新、垂直刷新
ex.cbSize = sizeof(ex);
ex.cbClsExtra = 0;
ex.cbWndExtra = 0;
ex.hInstance = hInstance;
ex.hIcon = NULL;
ex.hIconSm = NULL;
ex.hCursor = NULL;
ex.lpszMenuName = NULL;
ex.hbrBackground= CreateSolidBrush(RGB(237,28,36));//指定背景画刷句柄 红色
ex.lpszClassName= "123"; //指定窗口的名字,用于CreateWindow()函数
ex.lpfnWndProc = MyWNDPROC;//数指针类型=函数 ,函数名装的就是函数的地址
//2.注册
RegisterClassEx(&ex);
//3.创建
hWnd=CreateWindow(ex.lpszClassName,"简单的paint",WS_OVERLAPPEDWINDOW,100,100,
600,600,NULL,NULL,hInstance,NULL);
//创建窗口函数,在窗口创建完成之后,会返回一个句柄,
//之后对窗口的操作就根据句柄来实现
//4.显示
ShowWindow(hWnd,nCmdShow) ;
//5.消息循环
while(GetMessage(&msg,NULL,0,0)) //NULL接受所有的消息,变成hWnd只接受该窗口的
{
TranslateMessage(&msg) ;
DispatchMessage(&msg) ;
}
}
LRESULT CALLBACK MyWNDPROC(HWND hWnd,UINT Msg, WPARAM wParam, LPARAM lParam)
//窗口处理函数,消息处理函数
{
HBRUSH Purple_Brush= CreateSolidBrush(RGB(102,0,204));
HBRUSH White_Brush= CreateSolidBrush(RGB(255,255,255));
HDC hdc;
PAINTSTRUCT ps;
switch (Msg)
{
case WM_CLOSE:
PostQuitMessage(0);
break;
case WM_PAINT :
hdc = BeginPaint(hWnd,&ps);
//1.选择紫色的画刷
SelectObject(hdc,Purple_Brush);
//2.画一个矩形
Rectangle( hdc, 50, 50, 450, 450);
//3.选择白色的画刷
SelectObject(hdc,White_Brush);
//4.画一个圆
Ellipse( hdc, 100, 100,300,300);
//5.释放紫色画刷和白色画刷
DeleteObject(Purple_Brush);
DeleteObject(White_Brush);
EndPaint (hWnd, &ps) ;
}
return DefWindowProc(hWnd,Msg,wParam,lParam);
}
运行结果如下图: