C#实现类似MSN Messenger的弹出提示窗体

        也许有的朋友最近有些疑惑,我的Blog叫Windows Mobile开发历险,为什么最近的文章都是win32下的,其实我最近写的东西是Windows Mobile/Windows xp结构的,所以对于win32的某些技术用得到,也有了些自己的心得体会。后来想了想,不能让这些东西白白流失,还是写下来吧。以便让自己记得长久,还能跟大家分享。
        今天的文章,我主要介绍MSN Messenger弹出窗体的实现方法,MSN Messenger的弹出窗体就是再联系人登录或者发送新消息时候桌面右下角弹出的窗体。实现这样的窗体很简单,delphi中我写过这样的组件,不过因为号称商业机密的东西不便发表。C#就自由了,随便发布,哈哈!
        其实实现这个弹出窗体只需调用windows API函数即可,AnimateWindow——我们都可以顾名思义了,哈哈!就是动态窗口!那么接下来我们只需知道如何调用该函数,如果定义该函数的参数,就可以了。下面我给出一个实例,并配上简单的注释,这样就能实现我们所要的功能了。如下:
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 FormHintTest
{
    public partial class FormHint : Form
    {
        public FormHint()
        {
            InitializeComponent();
            // 根据系统当前分辨率确定Hint窗体的位置 
            int x = Screen.PrimaryScreen.WorkingArea.Width - this.Width - 1;
            int y = Screen.PrimaryScreen.WorkingArea.Height - this.Height - 1;
            this.Location = new Point(x, y);
        }

        public void Popup()
        {
            //在public函数中调用API函数实现动态效果
            AnimateWindow(this.Handle, 200, (uint)AnimateWindowFlags.AW_SLIDE |
                         (uint)AnimateWindowFlags.AW_VER_NEGATIVE | (uint)AnimateWindowFlags.AW_ACTIVATE);
            this.Show();
        }


        [DllImport("user32.dll")] //Invoke Windows API函数 AnimateWindow
        public extern static bool AnimateWindow(IntPtr hwnd,uint dwTime,uint dwFlags);

        public enum AnimateWindowFlags : uint //AnimateWindow的dwFlags参数定义
        {
            AW_HOR_POSITIVE = 0x00000001,
            AW_HOR_NEGATIVE = 0x00000002,
            AW_VER_POSITIVE = 0x00000004,
            AW_VER_NEGATIVE = 0x00000008,
            AW_CENTER = 0x00000010,
            AW_HIDE = 0x00010000,
            AW_ACTIVATE = 0x00020000,
            AW_SLIDE = 0x00040000,
            AW_BLEND = 0x00080000
        }

    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值