用一个对话框来实现类似QQ的窗口抖动。
1.建立一个基于对话框的工程
2.在.h文件中添加两个成员变量。
CRect m_originRect; //保存当前对话框所在的矩形
int m_index; //对话框移动到第几个位置
void CBimapDlgDlg::OnMovewindow()
{
// TODO: Add your control notification handler code here
SetTimer(1,35,NULL); //将对话框设置为每隔35毫秒移动一次
SetTimer(2,900,NULL); //将对话框抖动时间设为900毫秒
m_index=1;
}
4.添加WM_TIMER的消息映射
void CBimapDlgDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
GetWindowRect(&m_originRect);
if(nIDEvent==1)
{
switch (m_index)
{
case 1:
MoveWindow(m_originRect.left-5,m_originRect.top,m_originRect.Width(),m_originRect.Height(),FALSE);//向左移动5
m_index=2;
break;
case 2:
MoveWindow(m_originRect.left,m_originRect.top+5,m_originRect.Width(),m_originRect.Height(),TRUE);//向下移动5
m_index=3;
break;
case 3:
MoveWindow(m_originRect.left+5,m_originRect.top,m_originRect.Width(),m_originRect.Height(),TRUE);//向右移动5
m_index=4;
break;
case 4:
MoveWindow(m_originRect.left,m_originRect.top-5,m_originRect.Width(),m_originRect.Height(),TRUE); //向上移动5,回到原点
m_index=1;
break;
};
}
if(nIDEvent==2)
{
KillTimer(1);
KillTimer(2); //停止抖动
}
CDialog::OnTimer(nIDEvent);
}