椭圆窗体的实现
2010-05-12 20:35:14 来源:WEB开发网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);
更多精彩
赞助商链接