Shell_NotifyIcon问题

luoyefeng 2002-08-22 09:50:57
我使用Shell_NotifyIcon在任务栏显示一个图标,首先声明函数声明是没有问题的,出现的问题是我在我的机器上无论在编译环境还是程序都是正常的,但是把编译好的程序在其他机器上使用有的就看不到图标,我开始是把图标做成资源文件,现在直接放在目录中仍然有问题,注意:所有机器都是win2000的
...全文
69 16 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
我只能在目录中放一个图标了

1,108

社区成员

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

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