标题:AnimateWindow函数为啥不能 用呢
只看楼主
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
 问题点数:0 回复次数:4 
AnimateWindow函数为啥不能 用呢
编译的时候出现说这3个没有定义(AW_HIDE | AW_SLIDE | AW_VER_POSITIVE)
AnimateWindow函数也被指出没有说明类型,
我想问大家,我在头已经定义过#include <windows.h>了
为啥我还不能用这个函数呢
该如何定义它才能用呢
请大家指点啊

#include <windows.h>
#include "..\Hook\Hook.h"
#pragma comment(lib, "Hook.lib")
#include "resource.h"
#define ID_MYTIMER 419 // 计时器ID
BOOL g_bStart;
HWND g_hQQ;
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CLOSE:
AnimateWindow(hDlg, 800, AW_HIDE | AW_SLIDE | AW_VER_POSITIVE);
EndDialog(hDlg, 0);
break;
case WM_COMMAND:
{
if (LOWORD(wParam) == IDC_BTN_CONTROL)
{
g_bStart = !g_bStart;
SetDlgItemText(hDlg, IDC_BTN_CONTROL, g_bStart ? "停止" : "开始");
if (g_bStart)
SetTimer(hDlg, ID_MYTIMER, 1000, NULL);
else
{
KillTimer(hDlg, ID_MYTIMER);
SetHook(NULL);
}
}
if (LOWORD(wParam) == IDC_BTN_EXIT)
SendMessage(hDlg, WM_CLOSE, 0, 0);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_INITDIALOG:
{
int x, y;
RECT rect;
g_bStart = FALSE;
GetWindowRect(hDlg, &rect);
x = GetSystemMetrics(SM_CXSCREEN) - rect.right + rect.left;
y = GetSystemMetrics(SM_CYMAXIMIZED) - rect.bottom + rect.top - 10;
SetWindowPos(hDlg, HWND_TOPMOST, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
AnimateWindow(hDlg, 800, AW_SLIDE | AW_VER_NEGATIVE);
}
break;
case WM_TIMER:
{
if (!IsWindow(g_hQQ))
{
// 感谢好友hottey的查找代码,省去了我使用Spy++的麻烦
HWND hSend;
g_hQQ = NULL;
SetHook(NULL);
do
{
g_hQQ = FindWindowEx(NULL, g_hQQ, "#32770", NULL);
hSend = FindWindowEx(g_hQQ, NULL, "Button", "发送(&S)");
} while(g_hQQ != NULL && hSend == NULL);
if (g_hQQ != NULL)
SetHook(g_hQQ);
}
}
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
return 0;
}
搜索更多相关主题的帖子: 函数 windows Hook include 
2006-03-26 09:45
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
在include子目录,用文件编辑器打开Winuser.h文件(事前备份,防止改错或改动后不行你改不回来),查找AnimateWindow函数定义,一处是定义该函数中使用到的参数;另一处是该函数原型的定义。在这两处定义中均出现了对Windows版本的条件判断:#if (WINVER >= 0X0500)... 将这两处的0X500改为0X0400



#if(WINVER >= 0x0500)//这里改掉,注意有两处
WINUSERAPI
BOOL
WINAPI
AnimateWindow(
HWND hWnd,
DWORD dwTime,
DWORD dwFlags);
#endif /* WINVER >= 0x0500 */

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-03-26 13:17
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
补充一下,如果你的windows的版本是5.0或以上就不是这个问题,如果你用的windows的版本是5.0以下,估计就是这个问题,Windows CE是不支持AnimateWindow函数的

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-03-26 13:35
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
win 98 ,win me以上都支持

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-03-26 13:36
yaoguai2005
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2005-9-11
得分:0 

真是谢谢斑竹了
让我回去看看,我用的是XP,VC6。0编译器。


2006-03-27 10:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-52838-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.221238 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved