- 浏览: 15020 次
最新评论
VB窗口图表化
- 博客分类:
- 技术杂绘
VB窗口图表化
2011年04月20日
'本模块为实现托盘图标的模块 , 他在主窗体的form_resize和 form_unload中存在,看以下例子.
'Private Sub Form_Resize()
'If Me.WindowState = vbMinimized Then
' If tptb.show_yes = False Then
' tptb.AddToTray Me, m1
' tptb.show_yes = True
' tptb.SetTrayTip "资料管理"
' End If
' Me.Hide
'End If
'If Me.WindowState = 0 Then Me.WindowState = 2
'End Sub
'Private Sub Form_Unload(Cancel As Integer)
' tptb.RemoveFromTray
'End Sub
Public show_yes As Boolean
Public OldWindowProc As Long
Private TheForm As Form
Private TheMenu As Menu
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer '声明外部函数,获得鼠标按键状态
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) '模拟鼠标按键的API
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpszOp As String, _
ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal LpszDir As String, ByVal FsShowCmd As Long) _
As Long
Const SW_SHOW = 5
Const WM_USER = &H400
Const WM_RBUTTONUP = &H205
Const TRAY_CALLBACK = (WM_USER + 1001&)
Const GWL_WNDPROC = (-4)
Const GWL_USERDATA = (-21)
Const NIF_ICON = &H2
Const NIF_TIP = &H4
Const NIM_ADD = &H0
Const NIF_MESSAGE = &H1
Const NIM_MODIFY = &H1
Const NIM_DELETE = &H2
Const WM_LBUTTONDBLCLK = &H203
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const VK_LBUTTON = &H1
Const VK_RBUTTON = &H2
Const MOUSEEVENTF_RIGHTDOWN = &H8 ',模拟鼠标右键按下
Const MOUSEEVENTF_RIGHTUP = &H10 ',模拟鼠标右键抬起
Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
'记录 设置托盘图标的数据 的数据类型NOTIFYICONDATA
Private Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
Uid As Long
UFlags As Long
UCallbackMessage As Long
HIcon As Long
SzTip As String * 64
End Type
'TheData变量记录设置托盘图标的数据
Private TheData As NOTIFYICONDATA
' *********************************************
' 新的窗口过程--主程序中采用SetWindowLong函数改变了窗口函数的地址,消息转向由NewWindowProc处理
' *********************************************
Private Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'如果用户点击了托盘中的图标,则进行判断是点击了左键还是右键
If msg = TRAY_CALLBACK Then
'如果点击了左键
If lParam = WM_LBUTTONDBLCLK Then
TheForm.WindowState = vbMaximized
TheForm.Show
Exit Function
End If
'如果点击了右键
If lParam = WM_RBUTTONUP Then
'则弹出右键菜单
TheForm.PopupMenu TheMenu
Exit Function
End If
End If
'如果是其他类型的消息则传递给原有默认的窗口函数
NewWindowProc = CallWindowProc(OldWindowProc, hwnd, msg, wParam, lParam)
End Function
' *********************************************
' 把主窗体的图标(Form1.icon属性可改变)添加到托盘中
' *********************************************
Public Sub AddToTray(frm As Form, mnu As Menu)
'保存当前窗体和菜单信息
Set TheForm = frm
Set TheMenu = mnu
'GWL_WNDPROC获得该窗口的窗口函数的地址
OldWindowProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
'知识点滴:HWnd属性
'返回窗体或控件的句柄。语法: object.HWnd
'说明:Microsoft Windows 运行环境,通过给应用程序中的每个窗体和控件
'分配一个句柄(或 hWnd)来标识它们。hWnd 属性用于Windows API调用。
'将主窗体图标添加在托盘中
With TheData
.Uid = 0 '忘了吗?参考一下前面内容,Uid图标的序号,做动画图标有用
.hwnd = frm.hwnd
.cbSize = Len(TheData)
.HIcon = frm.Icon.Handle
.UFlags = NIF_ICON '指明要对图标进行设置
.UCallbackMessage = TRAY_CALLBACK
.UFlags = .UFlags Or NIF_MESSAGE '指明要设置图标或返回信息给主窗体,此句不能省去
.cbSize = Len(TheData) '为什么呢?我们需要在添加图标的同时,让其返回信息
End With '给主窗体,Or的意思是同时进行设置和返回消息
Shell_NotifyIcon NIM_ADD, TheData '根据前面定义NIM_ADD,设置为“添加模式”
End Sub
' *********************************************
' 删除系统托盘中的图标
' *********************************************
Public Sub RemoveFromTray()
'删除托盘中的图标
With TheData
.UFlags = 0
End With
Shell_NotifyIcon NIM_DELETE, TheData '根据前面定义NIM_DELETE,设置为“删除模式”
'恢复原有的设置
'SetWindowLong TheForm.hwnd, GWL_WNDPROC, OldWindowProc
End Sub
' *********************************************
' 为托盘中的图标加上浮动提示(也就是鼠标移上去时出现的提示字条)
' *********************************************
Public Sub SetTrayTip(tip As String)
With TheData
.SzTip = tip & vbNullChar
.UFlags = NIF_TIP '指明要对浮动提示进行设置
End With
Shell_NotifyIcon NIM_MODIFY, TheData '根据前面定义NIM_MODIFY,设置为“修改模式”
End Sub
' *********************************************
' 设置托盘的图标(在本例中没有用到,如果要动态改变托盘内显示的图标,它非常有用)
' 例如:1、显示动画图标(方法你一定猜到了,对!使用Timer控件,不断调用此过程,注意把动画放在pic数组中)
' 2、程序处于不同状态时,显示不同的图标,方法是类似的
' 有兴趣的话试一试吧。
' *********************************************
Public Sub SetTrayIcon(pic As Picture)
'判断一下pic中存放的是不是图标
If pic.Type vbPicTypeIcon Then Exit Sub
'更换图标为pic中存放的图标
With TheData
.HIcon = pic.Handle
.UFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, TheData
End Sub
发表评论
-
[.net] 关于.net线程问题总结(二)
2012-01-20 01:45 330[.net] 关于.net线程问题总结(二) 2011年01 ... -
加速你的hibernate引擎
2012-01-20 01:45 703加速你的hibernate引擎 20 ... -
Hello Android 第三版 (二)
2012-01-20 01:45 672Hello Android 第三版 (二) 2010年09月 ... -
MySQL的优化(本文是Monty在O'Reilly Open Source Convention 2000大会上的演讲)(摘自老叶的博客,有删改)
2012-01-20 01:45 636MySQL的优化(本文是Monty在O'Reilly Open ... -
一个对Winsock完成端口模型封装的类
2012-01-20 01:45 792一个对Winsock完成端口模型封装的类 2011年01月0 ... -
VB 两小时
2012-01-19 09:33 697VB 两小时 2011年09月25日 Option Ex ... -
使用 Shell 属性及方法
2012-01-19 09:33 834使用 Shell 属性及方法 2 ... -
VB获取QQ2011安装路径
2012-01-19 09:33 851VB获取QQ2011安装路径 2011年05月23日 V ... -
VB关机代码
2012-01-19 09:33 789VB关机代码 2011年07月20日 .首先在Form1 ... -
转载:OpenGL显示文字
2012-01-17 02:08 817转载:OpenGL显示文字 2010年07月03日 本课 ... -
c/c++调用java
2012-01-17 02:08 942c/c++调用java 2011年06月30日 ... -
面试题讲评
2012-01-17 02:08 669面试题讲评 2011年03月14日 面试了几家公司,只有 ... -
主流嵌入式操作系统介绍(一)
2012-01-17 02:08 1716主流嵌入式操作系统介绍(一) 2010年08月13日 h ... -
AIX平台TONGLINK/Q安装与配置
2012-01-17 02:08 1598AIX平台TONGLINK/Q安装与配 ... -
柬埔寨攻略―签证、机票
2012-01-15 21:35 759柬埔寨攻略―签证、机票 2010年01月05日 一、签证 ... -
如何培养一年级学生良好的学习习惯
2012-01-15 21:35 572如何培养一年级学生良 ... -
培养一年级学生良好学习习惯
2012-01-15 21:35 534培养一年级学生良好学 ... -
094小学科学教育
2012-01-15 21:35 493094小学科学教育 2009年11月10日 全国2009 ...
相关推荐
VB.NET让窗体的图片变成圆角
提供VB.net、C#丰富使用例子,报表如何调用一目了然。 一、工具特点: 1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的...
VB EXCEL 获取当前打印机,VB EXCEL 判断单元格内是否有图片,VB EXCEL 添加图表(带数据簇状柱状图),VB EXCEL 添加一张表,VB EXCEL 用独立窗口显示图表(为何没有变化)
窗口设计器 数据库控制 超级数据格式编辑控件 图表编辑器使用说明 本图表编辑器提供以下功能: .增加、插入、删除、查询、命名工作表。 .在单元格里面输入数据和公式。 .改变行、列尺寸 .格式化数据 ....
3、图表打印功能。5.2版控件新增了一个Chartlet的组件,使用非常方便,可以生成柱形图、饼图、折线图等多种图形,而且可以设置2D或3D效果,既可以在打印控件中打印出来,也可以在Graphics对象中显示。 4、文本打印...
在运行中显示或隐藏窗口的标题栏,制作工具栏,窗口的动画效果,旋转文字效果演示,任意旋转图像,反转颜色,淡入淡出效果,数据显示与修改,动态创建数据库,将Access表中数据按一定格式存储到Txt文件,-绘制图表.....
提供VB.net、C#丰富使用例子,报表如何调用一目了然。 工具特点: 1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的...
或者改变最小化按钮的行为,当用户按最小化按钮时,窗口就不再缩小到状态栏中,而出现在系统托盘中(33KB) 58,s015imgctls.ZIP 该控件包含两个控件,ImgListBox和ImgComboBox。它扩展了ListBox和ComboBox的...
或者改变最小化按钮的行为,当用户按最小化按钮时,窗口就不再缩小到状态栏中,而出现在系统托盘中(33KB) 58,s015imgctls.ZIP 该控件包含两个控件,ImgListBox和ImgComboBox。它扩展了ListBox和ComboBox的...
├─Example069-绘制图表 ├─Example070-保存rtf文件到数据库中 ├─Example071-打开对话框 ├─Example072-保存对话框 ├─Example073-字体对话框 ├─Example074-颜色对话框 ├─Example075-输入对话框和消息...
本DataGridView打印控件和.NET打印控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以的),有帮助文档与使用实例。 与上一版本的5.5版...
3、强大的图表打印功能。5.2版控件新增了一个Chartlet的组件,使用非常方便,可以生成柱形图、饼图、折线图等多种图形,而且可以设置2D或3D效果,既可以在打印控件中打印出来,也可以在Graphics对象中显示。 4、分组...
或者改变最小化按钮的行为,当用户按最小化按钮时,窗口就不再缩小到状态栏中,而出现在系统托盘中(33KB) 58,s015imgctls.ZIP 该控件包含两个控件,ImgListBox和ImgComboBox。它扩展了ListBox和ComboBox的...
功能特性 animation是否动画显示数据,默认为1(True) showNames是否显示横向坐标轴(x轴)标签名称 ...link链接(本窗口打开[Url],新窗口打开[n-Url],调用JS函数[JavaScript:函数]) name横向坐标轴标签名称
元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件 操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解, 因而,很容易调试并得以实现,让您通过...
提供VB.net、C#丰富使用例子,报表如何调用一目了然。 一、工具特点: 1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的...
1、重新设计图表接口,让图表可视化设计与编程控制更清晰简单。 2、支持更多图表类型,如百分比柱状图、垂直排列的柱图。 3、一个图表中可以混和显示多种不同类型的图形,如一个序列为柱图,另一个序列为曲线图。 4...
7、此时数据将显示到图表窗口中,右击鼠标有使用说明。 该Chart.dll不仅能显示曲线图还能将数据库存到Access数据库,具体请看工程中使用范例. 本应用因绘图效率比一般图表控件高(如msChart等),所以较合适作为软件...