闲坐敲棋

有约不来过夜半,闲敲棋子落灯花

导航

winform 类似 MSN,QQ 消息框

Posted on 2009-08-24 12:57  闲坐敲棋  阅读(1079)  评论(0编辑  收藏  举报
form1 主窗体
--------------------

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;
        }
    }
}