C++ 使用 MoveWindow() 动画按钮
C++ Animating a button with MoveWindow()
我是 C++ 的新手,似乎被卡住了。我里面基本上有一个 Window 和一个按钮(也是用 CreateWindow() 创建的)。我想让按钮在 X 轴上移动,我尝试使用 MoveWindow() 但我似乎无法制作动画效果。我尝试在 for 循环中编写它,但我还没有找到用来延迟动画的方法。如果有任何帮助,我将不胜感激。
for (int i = 0; i < 50; i++) {
MoveWindow(g_MovingDot, i, ButtonTop, ButtonWidth, ButtonHeight, true);
//Delay it somehow
}
这是正确的方法吗?我只想让按钮慢慢向右移动。
使用SetTimer
函数在超时值结束时收到通知。
实现带有签名的函数
VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT_PTR, DWORD);
并将函数指针传递给SetTimer
,以注册回调过程。
使用全局控制变量,控制window的动画。在下面的代码片段中,控制变量被命名为 i_g
.
当计时器结束时,将调用回调过程。增加控制变量,稍微移动对话框元素并重新启动计时器,直到到达最终位置。
动画时间由动画步数和单步时间间隔控制
int g_i=0;
void CALLBACK BtnTimer( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime )
{
KillTimer( hwnd, idEvent );
if ( g_i < 50 )
{
MoveWindow(g_MovingDot, i, ButtonTop, ButtonWidth, ButtonHeight, true);
g_i ++;
SetTimer( hwnd, idEvent, 100 /* time milliseconds */, &BtnTimer );
}
}
void AnimateButton( HWND hDialogWnd //* HWND from Dialog */)
{
g_i = 0;
SetTimer( hDialogWnd, 0 /* idEvent */, 100 /* time milliseconds */, &BtnTimer );
}
我是 C++ 的新手,似乎被卡住了。我里面基本上有一个 Window 和一个按钮(也是用 CreateWindow() 创建的)。我想让按钮在 X 轴上移动,我尝试使用 MoveWindow() 但我似乎无法制作动画效果。我尝试在 for 循环中编写它,但我还没有找到用来延迟动画的方法。如果有任何帮助,我将不胜感激。
for (int i = 0; i < 50; i++) {
MoveWindow(g_MovingDot, i, ButtonTop, ButtonWidth, ButtonHeight, true);
//Delay it somehow
}
这是正确的方法吗?我只想让按钮慢慢向右移动。
使用SetTimer
函数在超时值结束时收到通知。
实现带有签名的函数
VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT_PTR, DWORD);
并将函数指针传递给SetTimer
,以注册回调过程。
使用全局控制变量,控制window的动画。在下面的代码片段中,控制变量被命名为 i_g
.
当计时器结束时,将调用回调过程。增加控制变量,稍微移动对话框元素并重新启动计时器,直到到达最终位置。
动画时间由动画步数和单步时间间隔控制
int g_i=0;
void CALLBACK BtnTimer( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime )
{
KillTimer( hwnd, idEvent );
if ( g_i < 50 )
{
MoveWindow(g_MovingDot, i, ButtonTop, ButtonWidth, ButtonHeight, true);
g_i ++;
SetTimer( hwnd, idEvent, 100 /* time milliseconds */, &BtnTimer );
}
}
void AnimateButton( HWND hDialogWnd //* HWND from Dialog */)
{
g_i = 0;
SetTimer( hDialogWnd, 0 /* idEvent */, 100 /* time milliseconds */, &BtnTimer );
}