如果你有使用过现在的金山毒霸,相信都见到了那种金山毒霸的窗口显示方式,由上下到中间的显示方式,这种显示方式,对于应用窗体的人性化以及软件的外表的吸引力挺好的。下面,便是这种窗体的显示类型的源代码(当然了,这里说的是windows平台):
使用函数AnimateWindow 语法:
BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags)
参数说明: hWnd:制定产生动画的窗口句柄 dwTime:指明动画持续的时间(单位为纳秒),完成一个动画的标准时间为200纳秒 dwFlags:制定动画类型。这个参数可以是一个或多个下列标志的组合 返回值:如果函数成功,则返回值为非零;如果函数失败,则返回值为零。
#define AW_HOR_POSITIVE 0x00000001 //自左至右显示窗口。
#define AW_HOR_NEGATIVE 0x00000002 //自右至左显示窗口
#define AW_VER_POSITIVE 0x00000004 //自顶向下显示窗口
#define AW_VER_NEGATIVE 0x00000008 //自底向上显示窗口
#define AW_CENTER 0x00000010 //若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口。若未使用AW_HIDE标志,则使窗口向外扩展,即展开窗口。
#define AW_HIDE 0x00010000 //隐藏窗口,默认则显示窗口
#define AW_ACTIVATE 0x00020000 //激活窗口
#define AW_SLIDE 0x00040000 //滑动类型 #define AW_BLEND 0x00080000 //淡入淡出效果
实例代码:
打开时候的代码:
CenterWindow();
DWORD dwStyle=AW_CENTER;
HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));
MYFUNC* AnimateWindow;
AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");
AnimateWindow(this->m_hWnd,1000,dwStyle);
FreeLibrary(hInst);
关闭时候的代码:
DWORD dwStyle=AW_CENTER;
HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));
MYFUNC* AnimateWindow; AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");
AnimateWindow(this->GetSafeHwnd(),700,AW_HIDE|dwStyle);
//AnimateWindow(this->m_hWnd,1000,dwStyle);
FreeLibrary(hInst);
浙公网安备 33010602011771号