Chinaunix首页 | 论坛 | 博客
  • 博客访问: 578602
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:46:28

test:另一种不闪烁的实现方法:
1. 先建立一个HRGN或CRgn,这是窗口实际显示的区域。这个区域完全放在ClientRect内。
2. 在OnInitDialog()中SetWindowRgn()
3. 在OnPaint()中画出边框、标题、最大最小化按钮等。
4. 在OnMouseMove()判断鼠标光标是否在最大最小化按钮上,做出相应动画效果。在OnMouseLButtonDown()中判断是否点击了按钮,并做出动画效果。
5. 将OnMouseMove()和OnMouseLButtonDown()结合起来,
以拖到窗口:
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
CRect rect;

IsDraging=TRUE;
GetWindowRect(&rect);
LastCursorPosition.x=point.x+rect.left;
LastCursorPosition.y=point.y+rect.top;

CDialog::OnLButtonDown(nFlags, point);
}

void CMyDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
IsDraging=FALSE;

CDialog::OnLButtonUp(nFlags, point);
}

void CMyDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
if((nFlags&MK_LBUTTON)!=0)
{
CRect rect;
CPoint np;
GetWindowRect(&rect);
np.x=rect.left+point.x;
np.y=rect.top+point.y;
SetWindowPos(&wndTop,
rect.left+(np.x-LastCursorPosition.x),
rect.top+(np.y-LastCursorPosition.y),
0,0,SWP_NOSIZE);

LastCursorPosition=np;
}
CDialog::OnMouseMove(nFlags, point);
}

(发表于2002-8-15 15:00:00)

author22:这个东西也拿出来呀!昏
(发表于2004-4-5 15:14:00)

..........................................................................
--------------------next---------------------

阅读(231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~