有没有办法让程序在系统托盘右下角的图标显示动态的数字,就像一些内存整理软件一样?

jfzlnyf 2005-03-26 10:16:57
有没有办法让程序在系统托盘右下角的图标显示动态的数字,就像一些内存整理软件一样?
找到的托盘控件都只是一个图标而已
又没有能让程序在托盘里显示自己定义的数字一类的
很多内存整理的软件显示内存时都是这样,XP的任务管理器也是,怎么弄得呢?
...全文
282 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jfzlnyf2 2005-03-27
  • 打赏
  • 举报
回复
我又弄了,有效果了。
可是我要显示的1-1000数字怎么办?我总不能准备1000张图标吧
jfzlnyf 2005-03-27
  • 打赏
  • 举报
回复
很简单,在运行时动态改变图标就行了,
图标不固定定?那也很简单,在内存中自己创建一个图标,想画什么就画什么


怎么动态创建?
jfzlnyf 2005-03-27
  • 打赏
  • 举报
回复
我的是VB6,XP sp2
jfzlnyf 2005-03-27
  • 打赏
  • 举报
回复
楼上的我运行了怎么没有效果?还有我要显示剩余内存可能有很多数字啊,怎么办呢?
lingll 2005-03-27
  • 打赏
  • 举报
回复
我倾向于用api的方法,不需要用到控件,使用起来更灵活
lingll 2005-03-27
  • 打赏
  • 举报
回复
大概说一下做法,首先使用的是纯api的方法
先用CreateCompatibleBitmap在内存中创建一个bitmap,同时用CreateCompatibleDC创建一个dc,然后用SelectObject将bitmap选进那个dc里面,
这个时候就可以用bitblt,drawtext等函数往里面画东西了,

接下来,要创建icon了,为了方便,这里借助Imagelist来创建icon,用ImageList_Create创建一个imagelist,然后用ImageList_AddMasked将刚才创建的图片添加到Imagelist里面,接着就可以用ImageList_ExtractIcon输出icon了,

记得完成后,该释放的内存都要释放调,
很复杂,是吧?下面说一下不使用api的方法,

第一步,搞一个picturebox,autoredraw=true,然后将其设为图标大小,如16x16象素,然后往上面画东西就是了,写字的话用print方法,
第二步,添加ImageList control,然后将picturebox.image添加进去,然后用ListImage.ExtractIcon就可以输出图标了,
留下些什么 2005-03-26
  • 打赏
  • 举报
回复

类:clsNotifyIcon
Private Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeoutOrVersion As Long '由于VB中没有Union类型,只能用Long型代替
szInfoTitle As String * 64
dwInfoFlags As Long
End Type
Private Const NOTIFYICON_VERSION = 3
Private Const NOTIFYICON_OLDVERSION = 0

Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10

Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Enum NIMAction
[NIM_ADD] = 0 '添加
[NIM_MODIFY] = 1 '修改
[NIM_DELETE] = 2 '删除

End Enum

Private ni As NOTIFYICONDATA


'保持属性值的局部变量
Private mvarHwnd As Long '局部复制
Private mvarPicture As Long '局部复制
Private mvarTip As String '局部复制

Public Property Let Tip(ByVal vData As String)
'设置鼠标在图标上移动时的提示内容
On Error Resume Next
mvarTip = vData
ni.szTip = mvarTip & Chr(0)

End Property

Public Property Let Icon(ByVal vData As Long)
'设置压入托盘的图标
On Error Resume Next
mvarPicture = vData
ni.hIcon = mvarPicture

End Property

Public Property Let hwnd(ByVal vData As Long)

On Error Resume Next
mvarHwnd = vData
ni.hwnd = mvarHwnd

End Property

Sub Add()
NotifyIcon NIM_ADD
End Sub
Sub Modify()
NotifyIcon NIM_MODIFY
End Sub
Sub Delete()
NotifyIcon NIM_DELETE
End Sub
Sub NotifyIcon(ByVal action As NIMAction)
On Error Resume Next

If ni.hwnd = 0 Then
MsgBox "请设置对象的hwnd属性!", vbCritical, "提示"
Exit Sub
End If
Shell_NotifyIcon action, ni
End Sub
Private Sub Class_Initialize()
On Error Resume Next
With ni
.cbSize = Len(ni)
.uId = 1&
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.dwState = 1
.dwStateMask = 0
.uTimeoutOrVersion = 10000
.dwInfoFlags = 1
End With


End Sub

Private Sub Class_Terminate()
On Error Resume Next
'Me.Delete
End Sub

窗体:
Dim ni As New clsNotifyIcon
Private Sub Form_Load()
With ni
.hwnd = Me.hwnd
.Icon = Me.Image1(0).Picture
.Tip = "多个图标示例"
.Add
End With
Me.Timer1.Interval = 500
End Sub

Private Sub Form_Unload(Cancel As Integer)
ni.Delete
End Sub

Private Sub Timer1_Timer()
Static num As Integer
ni.Icon = Me.Image1(num)
ni.Modify
num = num + 1
If num = 3 Then num = 0
End Sub
lingll 2005-03-26
  • 打赏
  • 举报
回复
很简单,在运行时动态改变图标就行了,
图标不固定定?那也很简单,在内存中自己创建一个图标,想画什么就画什么
内容概要:本文围绕基于Matlab实现的面向光储充一体化社区的有序充电策略展开研究,旨在通过构建优化模型协调光伏发电、储能系统与电动汽车充电负荷之间的能量流动关系,解决综合能源系统中的充电调度问题。研究重点在于实现削峰填谷、降低用户用电成本、提升新能源就地消纳能力等多重目标。通过建立合理的数学优化模型,设定目标函数与约束条件,并借助Matlab工具完成求解与仿真分析,系统展示了如何将复杂的实际工程问题转化为可计算的优化问题,进而为社区级能源管理提供科学决策支持。代码实现部分详尽呈现了系统建模流程与算法求解细节,有助于读者深入理解有序充电策略的技术内涵与实现路径。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员及相关领域工程师,特别适用于从事综合能源系统、电动汽车调度、智能电网、微电网运行等方向的研究与开发人员。; 使用场景及目标:①学习光储充一体化系统的协同运行机制与能量管理策略;②掌握基于Matlab的优化建模方法与求解技术;③复现并改进有序充电调度算法,服务于学术论文撰写或实际工程项目开发;④为后续开展微电网优化调度、需求响应、分布式能源协调控制等相关课题奠定技术基础。; 阅读建议:建议结合Matlab代码逐行分析模型构建逻辑,重点关注目标函数的设计思路与各类物理、运行约束的数学表达方式,尝试调整负荷参数、新能源出力曲线或引入不同优化算法以观察策略敏感性,从而深刻把握有序充电策略的核心原理与应用潜力。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧