MFC定时器实现类似QQ桌面自动隐藏效果

        所谓QQ自动隐藏效果无非就是将对话框放到屏幕外面就行了。
大致步骤:

1、建立MFC对话框项目;

2、为对话框映射定时器消息;

3、开启定时器;

4、定义定时器操作函数;

5、关闭定时器;

具体步骤:

1、映射定时器WM_TIMER消息可以用多种方法,一种是下面的方法,还有一种就是使用类向导;

2、映射成功后会自动生成以下代码(已经在里面加上实现停靠效果的代码了):

//1、
afx_msg void OnTimer(UINT nIDEvent);
//2、
BEGIN_MESSAGE_MAP(CNoteManageDlg, CDialog)
	//{{AFX_MSG_MAP(CNoteManageDlg)
         
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()



//3、
void CNoteManageDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CRect rc,rect;
	CPoint m_Point;


	
//使用switch语句,是为多个定时器设计的,如果没有多个定时器的话,可以不用switch语句.        
        switch(nIDEvent)
	{	
	case 1 :break;
	case 2 :

//以下就是实现停靠效果的代码了
		{
			GetWindowRect(&rect);
			rc.CopyRect(&rect);
			GetCursorPos(&m_Point);
			if (rect.top<0&&PtInRect(rect,m_Point))
			{
				rect.top = 0;
				MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());
			} 
			else if(rect.top>-3&&rect.top<3&&!PtInRect(rect,m_Point))
			{
				rect.top = 3-rect.Height();
				MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());
			}
		}
		break;
	}
	CDialog::OnTimer(nIDEvent);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值