2012-06-21 62 views
0

如何在兩個窗口同時動畫?我試過了:如何在單獨的線程上使用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); 

但是panel2不會動畫,直到panel1完成動畫。

我必須使用線程..但我即使我使用不會調用..也它運行後的第2動畫第一

,所以我該怎麼辦呢?

+3

從[AnimateWindow](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632669(v = vs.85).aspx)msdn:'如果線程不擁有窗口。請注意,在這種情況下,AnimateWindow失敗,但GetLastError返回ERROR_SUCCESS.' – 3aw5TZetdf

回答

1

如果兩個窗口都是由同一個線程創建的,那麼AnimateWindow函數將在該線程上運行。據the MSDN documentation

的功能將在以下情況下會失敗:

  • 如果線程沒有自己的窗口。請注意,在這種情況下,AnimateWindow失敗,但GetLastError返回ERROR_SUCCESS

除了在單獨的線程上創建第二個窗口,沒有辦法解決這個問題。另外,您必須從創建每個窗口的線程調用AnimateWindow函數。

相關問題