How can I use the AnimateWindow function on a separate thread?

泪湿孤枕 提交于 2019-12-04 05:59:24

问题


How can I animate two windows at the same time? I tried:

[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);

But panel2 will not animate until panel1 finished its animation.

I must use the threading .. but i can't even if i used invoke .. also it runs the 2nd animation after the 1st

so how can i do it ?


回答1:


If both windows were created by the same thread, then the AnimateWindow function will run on that thread. According to the MSDN documentation:

The function will fail in the following situations:

  • If the thread does not own the window. Note that, in this case, AnimateWindow fails but GetLastError returns ERROR_SUCCESS.

There is no way around this other than creating the second window on a separate thread. Additionally, you will have to call the AnimateWindow function from the thread that each window was created on.



来源:https://stackoverflow.com/questions/11147086/how-can-i-use-the-animatewindow-function-on-a-separate-thread

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!