[DllImport("user32.dll")]
static extern bool DrawAnimatedRects(IntPtr hwnd, int idAni,
[In] ref RECT lprcFrom, [In] ref RECT lprcTo);
Only the IDANI_CAPTION constant will result in any animation. Any other constants have not been implemented on any Windows platform!
Since only IDANI_CAPTION is implemented, to get the effect of IDANI_OPEN, simply swap the lprcFrom and lprcTo rectangles, but still specify the IDANI_CAPTION constant.
static public void ShowHideAnimated(System.Windows.Forms form, System.Boolean show) {
RECT from = new RECT(form.Location, form.Size);
RECT to;
IntPtr hWnd = FindWindowEx(FindWindow("Shell_TrayWnd", null), IntPtr.Zero, "TrayNotifyWnd", null);
if (hWnd != IntPtr.Zero) {
GetWindowRect(hWndC, out to);
}
else {
to.Left = SystemInformation.VirtualScreen.Right - this.Width;
to.Top = SystemInformation.VirtualScreen.Bottom - SystemInformation.CaptionHeight - (SystemInformation.FrameBorderSize.Height * 2);
to.Right = SystemInformation.VirtualScreen.Right;
to.Bottom = SystemInformation.VirtualScreen.Bottom;
}
if (show) {
DrawAnimatedRects(this.Handle, IDANI_CAPTION, ref to, ref from);
form.Show();
}
else {
form.Hide();
DrawAnimatedRects(this.Handle, IDANI_CAPTION, ref from, ref to);
}
}
Do you know one? Please contribute it!