QQ中抖动窗口的实现方法

其实,QQ中抖动窗口的实现很简单,当用户按下抖动按钮的时候,播放一个WAV文件和按一定的顺序移动窗口就完了。。下面让我们来看一下具体的实现方法:

创建对话框应用程序,向对话框中添加一个按钮。讲按钮Caption改为:抖动窗口;然后双击按钮,为按钮添加BN_CLICK消息,在消息函数中我们会用到PlaySound这个SDK函数,用来播放WAV文件,也就是播放一段声音,该函数的第一个参数为pszSound,表示文件的名称,当然你要把你的WAV文件添加到该工程的目录下,不然系统会找不到文件,当这个参数设置为NULL时,停止播放,该函数只能播放较小的WAV文件,对于这个函数的具体用法大家可以参考MSDN,使用PlaySound函数时需要在#include<windows.h>后面加上(注意:不能加在前面):

#include <mmsystem.h>

#pragma comment(lib, "WINMM.LIB") 

我一般加在StdAfx.h中

............
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB") 

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__39778E0E_D063_4583_AB54_F28AC0207700__INCLUDED_)

具体做法如下:
void CTestDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CRect rect;
	GetWindowRect(&rect);
	int m_move=10;
	PlaySound("shake.wav",NULL,SND_FILENAME | SND_ASYNC);
	//为了使窗口抖动后能回到原来的位置,这里设置i必须为5的倍数并且i<5*n+1;
	for(int i=1;i<11;i++)
	{
		rect.OffsetRect(0,m_move);//OffsetRect函数将指定的矩形移动到指定的位置,这里是将矩形向上移动10像素
		MoveWindow(&rect);
		Sleep(40);
		rect.OffsetRect(m_move,0);
		MoveWindow(&rect);
		Sleep(40);
		if (10==m_move)
		{
			m_move=-10;
		}
		else
		{
			m_move=10;
		}
	}
}

 

你可能感兴趣的:(QQ中抖动窗口)