#include<windows.h>
#include"resource.h"
long FAR PASCAL WindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hdc; //定义指向设备的句柄
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指向画笔的句柄
PAINTSTRUCT ps; 定义指向包含绘图信息的结构体变量
POINT points[4]={{420,10},{450,60},{480,10},{420,10}};
POINT points2[6]={{450,120},{420,150},{420,180},{480,180},{480,150},{450,120}};
POINT points3[2]={{450,350},{650,350}};
POINT points4[2]={{550,250},{550,450}};
// LPPOINT lpPoints;
switch(message)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
RoundRect ( hdc, 4, 4, 60, 50,
3, 3);
hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
Ellipse( hdc, 80, 80, 150, 250);
hBrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
Pie
( hdc,
300,300, //边框矩形左上角的逻辑坐标
400,400, //边框矩形右下角的逻辑坐标
320,300, //椭圆弧起始经线的确定点坐标
380,300 //椭圆弧终止经线的确定点坐标
);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); //定义画笔
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Polyline
(hdc,
points, //指向包含各点坐标的POINT结构数组的指针
4 // nCount为POINT数组中点的个数
);
Ellipse(hdc, 420, 60, 480, 120);
Polyline
(hdc,
points2, //指向包含各点坐标的POINT结构数组的指针
6 // nCount为POINT数组中点的个数
);
hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
RoundRect ( hdc, 600, 10, 700, 65,
10, 10);
Pie
( hdc,
600,60, //边框矩形左上角的逻辑坐标
700,160, //边框矩形右下角的逻辑坐标
625,60, //椭圆弧起始经线的确定点坐标
675,60 //椭圆弧终止经线的确定点坐标
);
Rectangle( hdc, 600, 160, 700, 200);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Rectangle( hdc, 500, 300, 600, 400);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=CreateHatchBrush(HS_CROSS,RGB(255,0,0)); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Ellipse
(
hdc,
500, 320,
600, 380
);
hPen=CreatePen(PS_DOT,1,RGB(0,255,0)); //定义画笔
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Polyline
(hdc,
points3, //指向包含各点坐标的POINT结构数组的指针
2 // nCount为POINT数组中点的个数
);
Polyline
(hdc,
points4, //指向包含各点坐标的POINT结构数组的指针
2 // nCount为POINT数组中点的个数
);
#include"resource.h"
long FAR PASCAL WindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hdc; //定义指向设备的句柄
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指向画笔的句柄
PAINTSTRUCT ps; 定义指向包含绘图信息的结构体变量
POINT points[4]={{420,10},{450,60},{480,10},{420,10}};
POINT points2[6]={{450,120},{420,150},{420,180},{480,180},{480,150},{450,120}};
POINT points3[2]={{450,350},{650,350}};
POINT points4[2]={{550,250},{550,450}};
// LPPOINT lpPoints;
switch(message)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
RoundRect ( hdc, 4, 4, 60, 50,
3, 3);
hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
Ellipse( hdc, 80, 80, 150, 250);
hBrush=(HBRUSH)GetStockObject(HOLLOW_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
Pie
( hdc,
300,300, //边框矩形左上角的逻辑坐标
400,400, //边框矩形右下角的逻辑坐标
320,300, //椭圆弧起始经线的确定点坐标
380,300 //椭圆弧终止经线的确定点坐标
);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); //定义画笔
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Polyline
(hdc,
points, //指向包含各点坐标的POINT结构数组的指针
4 // nCount为POINT数组中点的个数
);
Ellipse(hdc, 420, 60, 480, 120);
Polyline
(hdc,
points2, //指向包含各点坐标的POINT结构数组的指针
6 // nCount为POINT数组中点的个数
);
hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
RoundRect ( hdc, 600, 10, 700, 65,
10, 10);
Pie
( hdc,
600,60, //边框矩形左上角的逻辑坐标
700,160, //边框矩形右下角的逻辑坐标
625,60, //椭圆弧起始经线的确定点坐标
675,60 //椭圆弧终止经线的确定点坐标
);
Rectangle( hdc, 600, 160, 700, 200);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Rectangle( hdc, 500, 300, 600, 400);
hPen=(HPEN)GetStockObject(BLACK_PEN); //定义画笔
hBrush=CreateHatchBrush(HS_CROSS,RGB(255,0,0)); //定义画刷
SelectObject(hdc,hBrush); //将画刷选入到当前设备环境中
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Ellipse
(
hdc,
500, 320,
600, 380
);
hPen=CreatePen(PS_DOT,1,RGB(0,255,0)); //定义画笔
SelectObject(hdc,hPen); //将画笔选入到当前设备环境中
Polyline
(hdc,
points3, //指向包含各点坐标的POINT结构数组的指针
2 // nCount为POINT数组中点的个数
);
Polyline
(hdc,
points4, //指向包含各点坐标的POINT结构数组的指针
2 // nCount为POINT数组中点的个数
);
DeleteObject(hPen); //删除画笔
DeleteObject(hBrush); //删除画刷
EndPaint(hWnd,&ps); //结束绘画
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_KEYDOWN:
switch(wParam)
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
break;
}
return DefWindowProc(hWnd,message,wParam,lParam);
}
int CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
MSG msg; //定义一个消息的对象
HWND hWnd; //窗口句柄
WNDCLASS wc; //定义窗口类
HMENU hMenu;
HDC hdc;
DeleteObject(hBrush); //删除画刷
EndPaint(hWnd,&ps); //结束绘画
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_KEYDOWN:
switch(wParam)
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
break;
}
return DefWindowProc(hWnd,message,wParam,lParam);
}
int CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
MSG msg; //定义一个消息的对象
HWND hWnd; //窗口句柄
WNDCLASS wc; //定义窗口类
HMENU hMenu;
HDC hdc;
//创建窗口类
wc.style = CS_HREDRAW | CS_VREDRAW ;//支持水平和垂直重绘
wc.lpfnWndProc = WindowProc; //相应的消息处理函数
wc.cbClsExtra = 0; //附加内存空间
wc.cbWndExtra = 0; //附加内存空间
wc.hInstance = hInstance; //窗口的实例句柄
wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)) ;//自定义的窗口的小图标
wc.hCursor = LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR1));//窗口的鼠标形状
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景颜色
wc.lpszMenuName = TEXT("MYMENU"); //窗口菜单
hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1));
wc.lpszClassName = TEXT("createwindows"); //窗口名称
RegisterClass(&wc); //注册窗口句柄
hWnd =CreateWindowEx( WS_EX_TOPMOST, //窗口总显示在顶部
TEXT("createwindows"), //窗口的类名
TEXT("李扬 07100109"), //窗口的标题
WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,//垂直滚动条与水平滚动条
10, //X轴初始化设定坐标
10, //Y轴初始化设定坐标
800, //宽度初始化
600, //高度初始化
NULL, //父窗口句柄
hMenu, //窗口菜单的句柄
hInstance, //实例句柄
NULL ); //附加消息
if(!hWnd) //判断窗口是否建立成功
{
return false;
}
SetMenu(hWnd,hMenu);
ShowWindow(hWnd,nCmdShow); //显示窗口
UpdateWindow(hWnd); //更新窗口
wc.style = CS_HREDRAW | CS_VREDRAW ;//支持水平和垂直重绘
wc.lpfnWndProc = WindowProc; //相应的消息处理函数
wc.cbClsExtra = 0; //附加内存空间
wc.cbWndExtra = 0; //附加内存空间
wc.hInstance = hInstance; //窗口的实例句柄
wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)) ;//自定义的窗口的小图标
wc.hCursor = LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR1));//窗口的鼠标形状
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景颜色
wc.lpszMenuName = TEXT("MYMENU"); //窗口菜单
hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1));
wc.lpszClassName = TEXT("createwindows"); //窗口名称
RegisterClass(&wc); //注册窗口句柄
hWnd =CreateWindowEx( WS_EX_TOPMOST, //窗口总显示在顶部
TEXT("createwindows"), //窗口的类名
TEXT("李扬 07100109"), //窗口的标题
WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,//垂直滚动条与水平滚动条
10, //X轴初始化设定坐标
10, //Y轴初始化设定坐标
800, //宽度初始化
600, //高度初始化
NULL, //父窗口句柄
hMenu, //窗口菜单的句柄
hInstance, //实例句柄
NULL ); //附加消息
if(!hWnd) //判断窗口是否建立成功
{
return false;
}
SetMenu(hWnd,hMenu);
ShowWindow(hWnd,nCmdShow); //显示窗口
UpdateWindow(hWnd); //更新窗口
while(true)
{
//接受系统消息(&msg为MSG类型的信息结构体,NULL 窗口句柄,
//0,0表示接受所有的窗口信息)
if(PeekMessage(&msg,NULL,0U,0U,PM_REMOVE))
{
if(msg.message ==WM_QUIT)
{
break;
}
TranslateMessage(&msg); //转化信息
DispatchMessage(&msg); //分配信息到相应的消息处理函数WindowProc中
}
else
{
WaitMessage(); //没有消息,就等待消息
}
}
return 1;
}
{
//接受系统消息(&msg为MSG类型的信息结构体,NULL 窗口句柄,
//0,0表示接受所有的窗口信息)
if(PeekMessage(&msg,NULL,0U,0U,PM_REMOVE))
{
if(msg.message ==WM_QUIT)
{
break;
}
TranslateMessage(&msg); //转化信息
DispatchMessage(&msg); //分配信息到相应的消息处理函数WindowProc中
}
else
{
WaitMessage(); //没有消息,就等待消息
}
}
return 1;
}