[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

时间: 2024-10-17 19:06:51

[c#]可在任意位置弹出的BalloonTip的相关文章

[C]可在任意位置弹出的BalloonTip(2)

          以前写过一篇文章,是用 C# 的自绘制窗口做了一个 Balloon Tip .这里由于讲的还是 BalloonTip ,所以作为前文的后续.不同的是,这一次是用 windows sdk 的 API  函数直接创建一个 ToolTip 窗口,然后我们就得到了 ToolTip 的窗口句柄,然后可以把 ToolTip 定位到屏幕任意的位置自然就是很简单的事.还是借用上次演示MSN式浮出通知窗口的例子,只是加入了 ToolTip 的相关代码.效果如下:                

jQuery实现点击任意位置弹出层外关闭弹出层效果_jquery

在之前做项目的时候经常会在主页面上点击某个按钮,右侧弹出一个div输出对应内容的详细信息.此时,我是希望在鼠标点击弹出层外的时候关闭该弹出层,主要思想就是: 找到鼠标点击的那个元素 判断这个元素是否在指定区域内,其实就是判断它的父元素是不是弹出层 如果不是就对弹出层进行hide,如果是就不进行任何操作 具体实现 该代码需要使用jQuery,代码如下: $(document).mousedown(function(e){ if($(e.target).parent("#info").le

Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果_Android

我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图: 这个要实现这个效果可以分几步进行 1.第一步自定义PopupWindow,实现如图的样式,这个继承PopupWindow自定义布局很容易实现 2.得到点击按钮的位置,根据位置是否在屏幕的中间的上方还是下方,将PopupWindow显示在控件的上方或者下方 3.适配问题,因为PopupWindow上面的操作列表

基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出_Android

Android Material Design:PopupMenu Android Material Design 引入的PopupMenu类似过去的上下文菜单,但是更灵活. 如图所示: 现在给出实现上图PopupMenu的代码. 本例是一个普通的Button触发弹出PopupMenu. 测试的MainActivity.java : package zhangphil.materialdesign; import android.app.Activity; import android.os.B

Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果

我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图: 这个要实现这个效果可以分几步进行 1.第一步自定义PopupWindow,实现如图的样式,这个继承PopupWindow自定义布局很容易实现 2.得到点击按钮的位置,根据位置是否在屏幕的中间的上方还是下方,将PopupWindow显示在控件的上方或者下方 3.适配问题,因为PopupWindow上面的操作列表

js点击页面中任意位置弹出新页面

弹出原是非常的简单 判断cookie是否过期,如果过期则重新设置cookie,并且定义弹出页面的url地址,最后调用弹窗.在弹出页面url中 popjs代码如下  代码如下 复制代码 function objpop(){  var obj=new Object;  var ua=navigator.userAgent;  var browser={   ie:/msie/i.test(ua),   ie6:/msie 6/i.test(ua),   ie7:/msie 7/i.test(ua),

Easyu里面的datagrid怎么实现点击某单元格在其鼠标的位置弹出menu选择菜单中update弹出dialog修改该单元格的值

问题描述 问题如上,可右击,只要能实现就行,目前遇到的问题就是菜单的位置不能根据鼠标点击的位置移动,只能固定设置其位置html代码如下:<divid="box"class="easyui-datagrid"></div><divid="menu"class="easyui-menu"style="display:none;"><div>add</div&

如何修改Fireworks弹出菜单的位置

菜单 如何修改Fireworks弹出菜单的位置 资料来源:Macromedia Top TechNotes 全文编译:spikal 多数时候,当你把在Fireworks4中制作的弹出菜单输入到一个HTML文件中预览时会发现,菜单出现的位置并非如你所愿. 引起错误的原因 改变了引发装置的位置 弹出菜单的引发装置(热区.按钮或者带链接的图片等)在Dreamweaver页面中的位置和在Fireworks画布中的位置不同. 浏览器留边 没有把页面的margins属性设置为"0". 引发装置相对

javascript实现在网页任意处点左键弹出隐藏菜单的方法_javascript技巧

在网页的任意处点击左键就会弹出来,实际上是用JS控制DIV层的显示,DIV层内嵌套的是一个表格,表格里放菜单,这样修改方便,不会CSS也没关系,你可以把它复制下来,用DW打开重新修改一下菜单样式,换成你自己喜欢的色彩 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>隐藏菜单</ti