社区
PowerBuilder
帖子详情
Shell_NotifyIcon问题
luoyefeng
2002-08-22 09:50:57
我使用Shell_NotifyIcon在任务栏显示一个图标,首先声明函数声明是没有问题的,出现的问题是我在我的机器上无论在编译环境还是程序都是正常的,但是把编译好的程序在其他机器上使用有的就看不到图标,我开始是把图标做成资源文件,现在直接放在目录中仍然有问题,注意:所有机器都是win2000的
...全文
69
16
打赏
收藏
Shell_NotifyIcon问题
我使用Shell_NotifyIcon在任务栏显示一个图标,首先声明函数声明是没有问题的,出现的问题是我在我的机器上无论在编译环境还是程序都是正常的,但是把编译好的程序在其他机器上使用有的就看不到图标,我开始是把图标做成资源文件,现在直接放在目录中仍然有问题,注意:所有机器都是win2000的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luoyefeng
2002-08-22
打赏
举报
回复
jeking:
我定义loadicon如下,
Public Function uLong LoadIcon(Long INSTANCE,long hIcon)
Library "user32" Alias For "LoadImageA"
但根据你的代码程序运行时提示 invalid stack pointer on return from function call,为什么?
jeking
2002-08-22
打赏
举报
回复
我的方法和你的比起来,真是差好多,惭愧.....
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
zqllyh
2002-08-22
打赏
举报
回复
ico\crm.ico -> .\ico\crm.ico
luoyefeng
2002-08-22
打赏
举报
回复
我现在正在测试,如果不对,那就使用你的方法
jeking
2002-08-22
打赏
举报
回复
恩,收到。
我这里,是好的。
也许,这是你说的问题。
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
luoyefeng
2002-08-22
打赏
举报
回复
常数
LR_LOADFROMFILE = 16
IMAGE_ICON = 1
jeking
2002-08-22
打赏
举报
回复
我反过来问你了?:)
LR_LOADFROMFILE = ?
IMAGE_ICON = ?
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
jeking
2002-08-22
打赏
举报
回复
那么hIcon有值的?
向你学习。
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
luoyefeng
2002-08-22
打赏
举报
回复
我的略有不同,在主窗体show事件中,如下
//NidTemp是行函数中的结构参数
NidTemp.cbSize = 88
NidTemp.hWnd = handle(this)
NidTemp.uID = 0
NidTemp.uFlags = NIF_MESSAGEorNIF_ICONorNIF_TIP
NidTemp.uCallbackMessage = WM_MOUSEMOVE
hIcon = LoadImage(0, "ico\crm.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
NidTemp.hicon = hicon
char mytip[64]
mytip = 'WIN_CRM' + char(0)
NidTemp.szTip = mytip
Shell_NotifyIcon (NIM_DELETE,NidTemp)
if hIcon <> 0 then
DestroyIcon(hIcon)
end if
hIcon = 0
现在我发现很可能是这个原因:我目前有两个系统,一个只使用PBR,另一个使用了几个PBR,其中ICO的申明有重复,就这个系统有问题,很可能是这个原因
jeking
2002-08-22
打赏
举报
回复
既然不原贴出来,那我给你我的吧。
api的申明你应该有,我不写了。
图标是当前应用程序的图标。要显示,得编译后得到。
ulong hStatIcon
application app
app = GetApplication()//得到应用程序
hStatIcon = LoadIcon(HANDLE(app, FALSE), 1000)//得到图标的句柄
if hStatIcon = 0 then
//messagebox('Error', 'Cannot load icon.', StopSign!)
//return
end if
g_icondata.cbsize = 88
g_icondata.hwnd = handle(this)
g_icondata.ucallbackmessage = 1024 +500//回调事件消息号
g_icondata.uid = 1
g_icondata.uflags = 7
g_icondata.hicon = hStatIcon
g_icondata.sztip = '图标显示'
if shell_notifyicon(NIM_ADD,g_icondata) <> 0 then
。。。
end if
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
luoyefeng
2002-08-22
打赏
举报
回复
不对,我以前的就是打包的,没什么问题
jeking
2002-08-22
打赏
举报
回复
打包的不会进去的。我当初也是这样的。
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
luoyefeng
2002-08-22
打赏
举报
回复
是个ico,我既打包,又放在目录中,仍然不对
licyme
2002-08-22
打赏
举报
回复
是不是在托盘上有占位而无图标?
在pbr中加一行
*.bmp
打包进去算了。
jeking
2002-08-22
打赏
举报
回复
pb使用Shell_NotifyIcon函数不是很好用。想自己用图标挺麻烦的。
我只能调用应用程序图标,和系统图标。不知你的程序如何。
贴出来看看吧。
/------------------\
苦命……命苦……
一切由自己决定!
\------------------/
luoyefeng
2002-08-22
打赏
举报
回复
我只能在目录中放一个图标了
Shell
_
Notify
Icon
_practice.rar
本资源是基于vs2017写的窗口程序,主要讲解是
Shell
_
Notify
Icon
()系统托盘图标的API函数的使用。亲测有效
系统托盘
Shell
_
Notify
Icon
访问系统托盘的方法是通过
Shell
_
Notify
Icon
函数和
NOTIFY
ICON
DATA结构实现的。 typedef struct _
NOTIFY
ICON
DATA { DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; H
ICON
h
Icon
; TCHAR szTip[64]; DWORD dwState; //Version 5.0 DWORD dwStateMask; //Version 5.0 TCHAR szInfo[256]; //Version 5.0 UINT uTimeout; //Version 5.0 TCHAR szInfoTitle[64]; //Version 5.0 DWORD dwInfoFlags; //Version 5.0 }
NOTIFY
ICON
DATA, *P
NOTIFY
ICON
DATA;
系统托盘例子
Shell
_
Notify
Icon
系统托盘例子.把窗口缩小到托盘.点托盘.出现窗口
利用API函数
Shell
_
Notify
Icon
在任务栏上放置图标。并且可以相应任务栏图标消息(5KB)
利用API函数
Shell
_
Notify
Icon
在任务栏上放置图标。并且可以相应任务栏图标消息(5KB)
Audio Change0.03 1021.rar_Audio change_
notify
icon
_tif
利用
Shell
_
Notify
Icon
()函数来在Windows的状态栏上显示程序的小图标,可以用来让程序常驻于Windows的状态栏上
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章