Как я могу использовать функцию 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);
Но панель2 не будет анимирована, пока панель1 не закончит анимацию.
Я должен использовать потоки.. но я не могу, даже если я использовал invoke .. также он запускает 2-ю анимацию после 1-го
так как я могу это сделать?
1 ответ
Если оба окна были созданы одним и тем же потоком, то AnimateWindow
функция будет работать в этом потоке. Согласно документации MSDN:
Функция не будет работать в следующих ситуациях:
- Если поток не владеет окном. Обратите внимание, что в этом случае
AnimateWindow
не удается, ноGetLastError
возвращаетсяERROR_SUCCESS
,
Нет другого способа, кроме как создать второе окно в отдельном потоке. Кроме того, вам придется позвонить AnimateWindow
функция из потока, в котором было создано каждое окно.