如何在单独的线程上使用AnimateWindow函数?

时间:2012-06-21 21:32:49

标签: winforms multithreading winapi animatewindow

如何同时为两个窗口设置动画?我试过了:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern bool AnimateWindow(IntPtr hwnd, int time, int flags);
...

AnimateWindow(panel1.Handle, speed, AW_SLIDE | AW_HOR_Top);
AnimateWindow(panel2.Handle, speed, AW_SLIDE | AW_HOR_Top);

但是在panel1完成动画之前,panel2不会动画。

我必须使用线程..但即使我使用了调用我也不能..它也会在第一个之后运行第二个动画

所以我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果两个窗口都是由同一个线程创建的,则AnimateWindow函数将在该线程上运行。根据{{​​3}}:

  

在以下情况下,该功能将失败:

     
      
  • 如果线程没有窗口。请注意,在这种情况下,AnimateWindow失败,但the MSDN documentation返回ERROR_SUCCESS
  •   

除了在单独的线程上创建第二个窗口之外,没有办法解决这个问题。此外,您必须从创建每个窗口的线程调用AnimateWindow函数。