问题
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 returnsERROR_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