[c#]可在任意位置弹出的BalloonTip

      BalloonTip通常出现在位于屏幕右下角的Tray(成为通知栏,或系统托盘)的Icon上,比如用户插拔USB设备时的气泡提示。该函数位于Shell32中,是通过调用下面这个API函数实现的, BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata ); 该函数用于控制对TrayIcon进行控制,可以弹出BalloonTip。然后却只能局限于Tray位置。而在QQ的聊天对话框中,我们发现如果不输入内容而试图发送消息时,就会在按钮上弹出这样的Tip。为此,我在C#中写了一个类似的窗口,可以在任意位置浮出,效果如下:
      
       这是测试程序的截图。在实现时,略微参考了codeproject上的仿MSN浮出窗口的代码。其涉及的主要麻烦是,为了提供足够灵活的接口,应该如何处理窗口上各个元素布局。为了简单期间,这里仅仅提供了“箭头”位于右下角的布局方式。(很显然该箭头一共可以有8个停靠位置)。 
 
     (1)在弹出时,不夺走其他窗口焦点。为此使用了API的ShowWindow函数: ShowWindow(this.Handle, SW_SHOWNOACTIVATE);
     (2)窗体上一共包含4项主要内容:图标,标题,内容文本,关闭按钮。用户可以配置他们,例如选择图标(可以由外部设置或者使用内置图标),是否显示关闭按钮,是否自动关闭(如果把TimeoutMilliSeconds属性设为负数则不会自动关闭,只能通过CloseButton关闭),各种颜色,字体等。另提供一个BalloonClick事件,通知外部用户点击事件。
     (3)绘制CloseButton的位图时,由于图中具有透明色,因此需要在绘制时指定透明色,相当于蒙版的作用。否则透明色会被绘制到窗体上导致窗体透明那个。
     (4)弹出该窗口,主要使用ShowAt()函数。里面需要一些参数。如果需要进一步设置其他属性,可以单独进行设置。

       源代码的下载链接: 
       http://files.cnblogs.com/hoodlum1980/JDL.UILib_BalloonTip_VS7.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值