MOOC清华《VC++面向对象与可视化程序设计》第2章:编程作业-渐变图形的绘制(“万花筒”程序)
#include <windows.h>
#include <math.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
LPSTR lpszCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char lpszClassName[]="万花筒";
char lpszTitle[]="万花筒";
wndclass.style=0;
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=lpszClassName;
if(! RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow
(
lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
0,
0,
500,
400,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
HPEN hpen[6];
LRESULT CALLBACK WndProc( HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
HDC hdc;
PAINTSTRUCT ps;
switch(message)
{
case WM_CREATE:
{
hpen[0]=(HPEN)CreatePen(PS_SOLID,0,RGB(125,0,0));
hpen[1]=(HPEN)CreatePen(PS_SOLID,0,RGB(255,0,0));
hpen[2]=(HPEN)CreatePen(PS_SOLID,0,RGB(0,125,0));
hpen[3]=(HPEN)CreatePen(PS_SOLID,0,RGB(0,255,0));
hpen[4]=(HPEN)CreatePen(PS_SOLID,0,RGB(0,0,125));
hpen[5]=(HPEN)CreatePen(PS_SOLID,0,RGB(0,0,255));
}
break;
case WM_PAINT:
{
double t;
int x0=220,y0=200;
int n=25,i,j,r=150;
int x[50],y[50];
t=6.28318/n;
hdc=BeginPaint(hwnd,&ps);
for(i=0;i<n;i++)
{
x[i]=int(r*cos(i*t)+x0);
y[i]=int(r*sin(i*t)+y0);
}
for(i=0;i<=n-2;i++)
{
for(j=i+1;j<=n-1;j++)
{
SelectObject(hdc,hpen[j%6]);
Sleep(50);
MoveToEx(hdc,x[i],y[i],NULL);
LineTo(hdc,x[j],y[j]);
}
}
EndPaint(hwnd,&ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
软件业务请联系QQ:3121432464“正聪科技客服”
posted on 2017-10-05 18:16 sunshineman1986 阅读(246) 评论(0) 收藏 举报
浙公网安备 33010602011771号