WEB开发网
开发学院软件开发VC vc++程序-旋转的风车 阅读

vc++程序-旋转的风车

 2010-06-04 20:38:01 来源:WEB开发网   
核心提示:做了个小程序,供大家参考//源程序如下#include <windows.h>#include <stdlib.h>#include <string.h>#include <math.h>#define PI 3.1415926int nNum=0,nMaxNum=20;

做了个小程序,供大家参考//源程序如下
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.1415926
  int nNum=0,nMaxNum=20;
  LRESULT CALLBACK WindowProc(
 HWND hwnd,   // handle to window
 UINT uMsg,   // message identifier
 WPARAM wParam, // first message parameter
 LPARAM lParam  // second message parameter
);
int WINAPI WinMain(
 HINSTANCE hInstance,   // handle to current instance
 HINSTANCE hPrevInstance, // handle to previous instance
 LPSTR lpCmdLine,     // command line
 int nCmdShow       // show state
)
  {
  HWND hwnd;
  MSG Msg;
  WNDCLASS wndclass;
  wndclass.cbClsExtra=0;
  wndclass.cbWndExtra=0;
  wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
  wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
  wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  wndclass.hInstance=hInstance;
  wndclass.lpfnWndProc=WindowProc;
  wndclass.lpszClassName="abc";
  wndclass.lpszMenuName=NULL;
  wndclass.style=0;
  RegisterClass(&wndclass);
  hwnd=CreateWindow("abc","旋转的风车",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,600,450,NULL,NULL,hInstance,NULL);
  ShowWindow(hwnd,SW_SHOWNORMAL);
  UpdateWindow(hwnd);
  while(GetMessage(&Msg,hwnd,NULL,0))
  {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
  }
  return 0;
}
  LRESULT CALLBACK WindowProc(
 HWND hwnd,   // handle to window
 UINT uMsg,   // message identifier
 WPARAM wParam, // first message parameter
 LPARAM lParam  // second message parameter
)
{
  HDC hdc;
  HBRUSH hBrush;
  HPEN hp;
  PAINTSTRUCT ps;
  int nCenterX,nCenterY;
  double fAngle;
  switch(uMsg)
  {
  case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    SetMapMode(hdc,MM_ANISOTROPIC);
    SetWindowExtEx(hdc,400,300,NULL);
SetViewportExtEx(hdc,600,450,NULL);
    SetViewportOrgEx(hdc,300,200,NULL);
  //    绘制外圆
    hp=CreatePen(PS_SOLID,1,RGB(255,0,255));
    SelectObject(hdc,hp);
    Ellipse(hdc,-100,-100,100,100);
  //    绘制风车的叶片
//    绘制红色的叶片
    hBrush=CreateSolidBrush(RGB(255,0,0));
    SelectObject(hdc,hBrush);
    fAngle=2*PI/nMaxNum*nNum;
    nCenterX=(int)(50*cos(fAngle));
    nCenterY=(int)(50*sin(fAngle));
    Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle)),(int)(nCenterY+50*sin(fAngle)),(int)(nCenterX+50*cos(fAngle+PI)),(int)(nCenterY+50*sin(fAngle+PI)));
  //    绘制蓝色的叶片
    hBrush=CreateSolidBrush(RGB(255,255,0));
    SelectObject(hdc,hBrush);
    nCenterX=(int)(50*cos(fAngle+2*PI/3));
    nCenterY=(int)(50*sin(fAngle+2*PI/3));
    Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle+2*PI/3)),(int)(nCenterY+50*sin(fAngle+2*PI/3)),(int)(nCenterX+50*cos(fAngle+PI+2*PI/3)),(int)(nCenterY+50*sin(fAngle+PI+2*PI/3)));
    
//    绘制黄色的叶片
    hBrush=CreateSolidBrush(RGB(0,255,255));
    SelectObject(hdc,hBrush);
    nCenterX=(int)(50*cos(fAngle+4*PI/3));
    nCenterY=(int)(50*sin(fAngle+4*PI/3));
    Pie(hdc,nCenterX-50,nCenterY-50,nCenterX+50,nCenterY+50,(int)(nCenterX+50*cos(fAngle+4*PI/3)),(int)(nCenterY+50*sin(fAngle+4*PI/3)),(int)(nCenterX+50*cos(fAngle+PI+4*PI/3)),(int)(nCenterY+50*sin(fAngle+PI+4*PI/3)));
  nNum++;
    Sleep(100);
    InvalidateRect(hwnd,NULL,1);
    EndPaint(hwnd,&ps);
  return 0;
  case WM_CLOSE:
    PostQuitMessage(0);
   break;
  default:
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
  }
  return 0;
}

Tags:vc 程序 旋转

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接