WEB开发网
开发学院软件开发VC 椭圆窗体的实现 阅读

椭圆窗体的实现

 2010-05-12 20:35:14 来源:WEB开发网   
核心提示:1.2 按下鼠标左键后,用鼠标拖动椭圆的实现方法,椭圆窗体的实现(2),使用类向导,添加CEllipseWindowDlg的WM_MOUSEMOVE的处理函数CEllipseWindowDlg::OnMouseMove(UINT nFlags, CPoint point),代码为:static BYTE x=80,y=

1.2 按下鼠标左键后,用鼠标拖动椭圆的实现方法。

使用类向导,添加CEllipseWindowDlg的WM_MOUSEMOVE的处理函数CEllipseWindowDlg::OnMouseMove(UINT nFlags, CPoint point),代码如下:

static CPoint p;
ClientToScreen(&point);
if(nFlags & MK_LBUTTON)
{
  SetCursor(LoadCursor(NULL,IDC_CROSS));
  CRect rc;
  GetWindowRect(rc);
  MoveWindow(rc.left+point.x-p.x,rc.top+point.y-p.y,rc.Width(),rc.Height());
}
p=point;

此时运行程序,按下鼠标左键,就可以拖动椭圆窗体了。

1.3 为这个窗体添加渐变的背景颜色。

在CEllipseWindowApp增加public成员函数void CEllipseWindowApp::SetBkColor(),代码为:

static BYTE x=80,y=40,z=30;
static BOOL flagx=TRUE,flagy=FALSE,flagz=TRUE;
if(flagx)
{
  x++;
  if(x>120)
    flagx=FALSE;
}
else
{
  x--;
  if(x<10)
    flagx=TRUE;
}
if(flagy)
{
  y+=2;
  if(y>100)
    flagy=FALSE;
}
else
{
  y-=2;
  if(y<20)
    flagy=TRUE;
}
if(flagz)
{
  z+=3;
  if(z>80)
    flagz=FALSE;
}
else
{
  z-=3;
  if(z<20)
    flagz=TRUE;
}
SetDialogBkColor(RGB(x,y,z),RGB(x+100,y+120,140));

此时运行程序,椭圆界面的颜色就会自动发生渐变。

在EllipseWindowDlg.cpp中加入代码:

extern CEllipseWindowApp theApp;

在CEllipseWindosDlg中加入定时器void CEllipseWindowDlg::OnTimer(UINT nIDEvent),其中的实现代码为:

theApp.SetBkColor();
Invalidate();

在BOOL CEllipseWindowDlg::OnInitDialog()中加入对初始化定时器代码:

SetTimer(1,20,NULL);

上一页  1 2 3 4  下一页

Tags:椭圆 窗体 实现

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