--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
Form2 frm=null;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
ShowMessageWindow("好哈哈哈");
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void ShowMessageWindow(object msg)
{
if (frm ==null )
{
frm = new Form2();
frm.Text = msg.ToString();
frm.ShowDialog();
}else if (frm.WidowHide){
frm.ShowDialog();
}
}
}
}
------------------------------------
Form2 (message 窗体 )
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
public partial class Form2 : Form
{
private bool _BWindowHide =false;
public Form2()
{
InitializeComponent();
}
public class Win32
{
public const Int32 AW_HOR_POSITIVE = 0x00000001;
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
public const Int32 AW_VER_POSITIVE = 0x00000004;
public const Int32 AW_VER_NEGATIVE = 0x00000008;
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
public const Int32 AW_ACTIVATE = 0x00020000;
public const Int32 AW_SLIDE = 0x00040000;
public const Int32 AW_BLEND = 0x00080000;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool AnimateWindow(
IntPtr hwnd, // handle to window
int dwTime, // duration of animation
int dwFlags // animation type
);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool SetWindowPos(
IntPtr hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags
);
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
_BWindowHide = true;
Win32.AnimateWindow(this.Handle, 500, Win32.AW_HIDE | Win32.AW_VER_POSITIVE | Win32.AW_SLIDE | Win32.AW_BLEND);
}
public new void ShowDialog()
{
_BWindowHide = false;
MyShowWindow();
base.ShowDialog();
}
public bool WidowHide
{
get { return _BWindowHide; }
}
private void MyShowWindow()
{
Win32.SetWindowPos(this.Handle, 100, Screen.PrimaryScreen.Bounds.Width - this.Width, Screen.PrimaryScreen.Bounds.Height - this.Height - 30, 50, 50, 1);
Win32.AnimateWindow(this.Handle, 500, Win32.AW_ACTIVATE | Win32.AW_SLIDE | Win32.AW_BLEND | Win32.AW_VER_NEGATIVE);
this.label1.Text = "宽:" + this.Width;
this.label2.Text = "高:" + this.Height;
}
}
}