vc++程序-旋转的风车

做了个小程序,供大家参考//源程序如下
#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;
}

时间: 2024-09-17 04:38:35

vc++程序-旋转的风车的相关文章

vc++编程问题-谁能帮忙把这个VC++程序上运行的纵坐标改动一下啊,跪求,急用……

问题描述 谁能帮忙把这个VC++程序上运行的纵坐标改动一下啊,跪求,急用-- 把第一个纵坐标改成0-20,第二个改成0-500,现在不能改动,而且已改动两个都会同时变化,且图形并不随改动值的变化而变化,急用,跪求了--不胜感激-- void CScope::DrawAxis(CDC *pDC) { CFont *pOldFont; int i,nPosY; CString str; pOldFont = pDC->SelectObject(&m_FontAxis); pDC->SetT

想做一个vc程序,后台监控指定文件夹中是否存在数据库文件,如果有则将文件内容上传到服务器数据库中。

问题描述 想做一个vc程序,后台监控指定文件夹中是否存在数据库文件,如果有则将文件内容上传到服务器数据库中. 有说可以写服务来后台监控的,但是我不太明白原理,服务是怎么实现后台监控, vc倒是可以直接生成一个服务,但是不清楚原理,完全不知道应该从哪下手. 希望有高手给解答一下. 解决方案 参考:http://blog.sina.com.cn/s/blog_a6fb6cc901017us1.html

非常感谢-数字图像处理中基于多文档的VC程序

问题描述 数字图像处理中基于多文档的VC程序 跪求大神基于多文档的将24位真彩塑BMP图像转换为8位灰度图像 解决方案 这里有现成的代码,而且有两个不同的算法,可以参考http://download.csdn.net/detail/schlafenhamster/3992785 解决方案二: 多文档只是界面.功能有了以后你就是集成到UI中去24位真彩色转换为8位灰度图 VC++ ..

c++-vc程序中调用控件的方法,谢谢。

问题描述 vc程序中调用控件的方法,谢谢. 程序中该如何调用ntgraph这个画图控件.我刚接触控件,现在仅能在对话框中插入该控件的水平.1.程序和控件是分别建个工程吗?2.在程序中该怎么调用控件呢?我想用这个控件的一个画图函数.百度后只了解到要在头文件中插入代码还有之类的看不懂了.希望有人能帮忙回答下或着发份相关资料,时间比较紧,十分感谢! 解决方案 这次请看清楚,不要采纳错了.谢谢 解决方案二: 新建一个mfc对话框程序,然后在对话框设计器中插入activex控件,选择你的控件即可. 参考:

c++-vc程序中使用控件的方法,谢谢。

问题描述 vc程序中使用控件的方法,谢谢. 程序中该如何调用ntgraph这个画图控件.我刚接触控件,现在仅能在对话框中插入该控件的水平.1.程序和控件是分别建个工程吗?2.在程序中该怎么调用控件呢?我想用这个控件的一个画图函数.百度后只了解到要在头文件中插入代码还有之类的看不懂了.希望有人能帮忙回答下或着发份相关资料,时间比较紧,十分感谢! 解决方案 VC6使用shakewaveflash控件方法解决VC6在win7中不能使用mscomm控件的方法VC中使用WebBrowser控件的两方法 解

mfc 对话框-vc++程序调试,出现winocc.cpp中的问题

问题描述 vc++程序调试,出现winocc.cpp中的问题 我自己编写了一个单文档的小程序,然后运行程序之后出现中断,进过调试寻找到是winocc.cpp中的void CWnd::GetProperty和void CWnd::SetProperty两个函数中的_ASSERT(m_pCtrlSite != NULL);均出现错误.希望大神能帮忙指出错误类型!!!谢谢!!! 解决方案 http://blog.sina.com.cn/s/blog_6084f5880100r3io.html 作为si

图片-VC程序打包遇到的问题

问题描述 VC程序打包遇到的问题 VC程序打包之前,编译运行都没有问题.打开相机时会有消息提示"相机打开成功". 但是我打包之后,运行exe,一打开相机,就会报错. 我觉得程序运行成功,说明程序没有问题,是我没有打包好.但是我打包的时候按照相机开发包中的说明将应该包含的DLL文件都包含了.我想不出问题出在哪里.希望各位大神鼎力相助,在此谢过各位! 解决方案 相关dll路径,都要正确,然后就是相机开发包的dll是不是需要注册等 解决方案二: [转载]VB.net程序的打包问题示例!NSI

mfc单文档-VC++程序调试,出现winocc.cpp中的问题!!!

问题描述 VC++程序调试,出现winocc.cpp中的问题!!! 我自己编写了一个单文档的小程序,然后运行程序之后出现中断,进过调试寻找到是winocc.cpp中的void CWnd::GetProperty和void CWnd::SetProperty两个函数中的_ASSERT(m_pCtrlSite != NULL);均出现错误.希望大神能帮忙指出错误类型!!!谢谢!!! 这是出错部分代码!! float* try::fun1( )//创建指定区域 { GET dlg; dlg.DoMod

vc++-VC程序 写入数据到数据库一直不成功?

问题描述 VC程序 写入数据到数据库一直不成功? DROP TABLE IF EXISTS `userlog`; CREATE TABLE `userlog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cameraChannel` int(11) NOT NULL, `cameraIp` varchar(255) NOT NULL, `cameraName` varchar(45) NOT NULL, `date` datetime NOT NULL, `