0

2つのウィンドウを同時にアニメーション化するにはどうすればよいですか?私は試した:

[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がアニメーションを終了するまでアニメーション化しません。

スレッドを使用する必要があります..しかし、invokeを使用しても使用できません..また、1番目の後に2番目のアニメーションを実行します

どうすればそれを行うことができますか?

4

1 に答える 1

1

両方のウィンドウが同じスレッドによって作成された場合、AnimateWindow関数はそのスレッドで実行されます。MSDNのドキュメントによると:

この関数は、次の状況で失敗します。

  • スレッドがウィンドウを所有していない場合。この場合、AnimateWindowは失敗しますが、をGetLastError返すことに注意してくださいERROR_SUCCESS

別のスレッドで 2 番目のウィンドウを作成する以外に、これを回避する方法はありません。さらに、AnimateWindow各ウィンドウが作成されたスレッドから関数を呼び出す必要があります。

于 2012-06-21T21:39:50.787 に答える