最小化到托盘乱码问题

sun1976 2006-07-15 11:12:59


版本:pb10.2

下面是找到的文章,按其方法,for 循环用mida()不管用,定义 char[64]变量也不管用
谁有有效方法,高分相赠
摆脱兄弟们帮帮忙,多谢!

其他一切正常。
相关代码如下:

myData.cbSize = 88 //long
mydata.hwnd =handle(this) //long
mydata.uID = 0 //long
mydata.uFlags = NIF_ICON + NIF_MESSAGE + NIF_TIP //long
mydata.uCallbackMessage = WM_MOUSEMOVE //long
mydata.hIcon = loadimage(0,TrayIcon,image_icon,0,0,lr_loadfromfile) //long
mydata.szTip = "打印服务器 - 中餐" //string
Shell_NotifyIcon(NIM_ADD,myData)
---------------------------------------------------------------
string ls_name = 'c:\td\interface.exe'
long ll_handle
long ll_icon

ll_handle = LoadLibrary(ls_name)
ll_icon = LoadIcon(ll_handle,1000)

istru_icondata.cbSize = 88
istru_icondata.hIcon = ll_icon
istru_icondata.uFlags += 2
istru_icondata.uCallbackMessage = 1024
istru_icondata.uFlags += 1
istru_icondata.szTip = '通讯软件'
istru_icondata.uFlags += 4
istru_icondata.uID = 1
istru_icondata.hWnd = handle(this)

Shell_NotifyIcon(0,istru_icondata)

istru_icondata.uFlags = 0

this.hide()

FreeLibrary(ll_handle)
---------------------------------------------------------------

如果pb10需要这样

string a
a="打印服务器 - 中餐"
for i=1 to LENA(A)
mydata.szTip[i] = MidA(a,i)
next
---------------------------------------------------------------

问题已经解决,谢谢大家!!

CHAR MYTIP[64]
myData.cbSize = 88
mydata.hwnd =handle(this)
mydata.uID = 0
mydata.uFlags = NIF_ICON + NIF_MESSAGE + NIF_TIP
mydata.uCallbackMessage = WM_MOUSEMOVE
mydata.hIcon = loadimage(0,TrayIcon,image_icon,0,0,lr_loadfromfile)
mytip = "打印服务器 - 中餐"
mydata.szTip = mytip

Shell_NotifyIcon(NIM_ADD,myData)

就加多了这个。。。。

CHAR MYTIP[64]
mytip = "打印服务器 - 中餐"

...全文
816 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun1976 2006-10-28
  • 打赏
  • 举报
回复
问题倒是早解决了,可惜不是这里的答案,所以不好给分
很长时间没上csdn,揭帖晚了,各位海涵
AFIC 2006-10-25
  • 打赏
  • 举报
回复
晕,不是吧,3个月了还没搞好阿,
你留下邮箱,我给你发一个好了。
sun1976 2006-10-25
  • 打赏
  • 举报
回复
多谢
不过关键在于pb10字符集不同
所以关键问题是外部函数的声明
后面加上alias for "XXXXXXX;Ansi"
关键就是;Ansi
其他的照我找到的方法做就可以
polestarxu 2006-08-15
  • 打赏
  • 举报
回复
1个PB9.0的window,可以看看


forward
global type w_systray from window
end type
type shl_1 from statichyperlink within w_systray
end type
type st_1 from statictext within w_systray
end type
type notifyicondata from structure within w_systray
end type
end forward

type notifyicondata from structure
long cbsize
long hwnd
long uid
long uflags
long ucallbackmessage
long hicon
any sztip
end type

global type w_systray from window
integer width = 1504
integer height = 912
boolean titlebar = true
string title = "SysTray演示"
boolean controlmenu = true
boolean minbox = true
boolean maxbox = true
boolean resizable = true
long backcolor = 67108864
string icon = "UserObject5!"
boolean center = true
event ue_event pbm_custom01
event ue_syscommand pbm_syscommand
shl_1 shl_1
st_1 st_1
end type
global w_systray w_systray

type prototypes

end prototypes

type variables
Constant Long NIM_ADD = 0 //显示
Constant Long NIM_MODIFY = 1 //修改
Constant Long NIM_DELETE = 2 //删除

Constant Long NIF_MESSAGEorNIF_ICONorNIF_TIP = 7
Constant Long IMAGE_ICON = 1
Constant Long LR_LOADFROMFILE = 16

Constant Long WM_LBUTTONDBLCLK = 515 //双击
Constant Long WM_RBUTTONUP = 517 //右键单击

Long hIcon

private:
str_notifyicondata istr_notifyicondata


end variables

forward prototypes
public function integer wf_addtotray (string as_icon, long al_handle, string as_tips)
public subroutine wf_removefromtray ()
end prototypes

event ue_event;/*
WM_MOUSEFIRST 512
WM_MOUSEMOVE 512
WM_LBUTTONDOWN 513
WM_LBUTTONUP 514
WM_LBUTTONDBLCLK 515
WM_RBUTTONDOWN 516
WM_RBUTTONUP 517
WM_RBUTTONDBLCLK 518
WM_MBUTTONDOWN 519
WM_MBUTTONUP 520
WM_MBUTTONDBLCLK 521
WM_MOUSELAST 521
*/

m_popup lm_popup
Integer li_X, li_Y
Integer li_flag


Choose Case lparam

CASE WM_LBUTTONDBLCLK // 双击

//删除图标、释放资源
wf_RemoveFromTray ()
//加载新图标
wf_AddToTray('sysicon2.ico', handle(this), "PB编程俱乐部")
//设置为活动窗口
SetForegroundWindow (Handle (This))
// 显示窗口
This.Show ( )

CASE WM_RBUTTONUP // 右键选择

li_X = This.X
li_Y = This.Y

//窗口最大化时处理(因不能移动,故暂设置为Normal!,之后恢复)
IF This.WindowState = Maximized! then
This.WindowState = Normal!
li_flag = 1
END IF

// 移动到屏幕外以免show 时看到
This.Move ( - This.Width - 10, - This.Height - 10 )
// 在屏幕外显示窗口,以便能看到菜单条(菜单条属于此窗口)
This.Show ( )

//设置为活动窗口
SetForegroundWindow (Handle (This))

//在鼠标位置弹出菜单
lm_popup = CREATE m_popup
lm_popup.m_item.PopMenu( PointerX(), PointerY())

// 恢复设置
IF isvalid(This) Then
This.Hide ( )
IF li_flag = 1 then
This.WindowState = Maximized!
Else
This.Move ( li_X, li_Y )
END IF
DESTROY lm_popup
END IF


END Choose

end event

event ue_syscommand;//窗口最小化时的处理

IF Commandtype = 61472 Then //最小化
wf_RemoveFromTray () //删除图标、释放资源
//加载新图标
IF wf_AddToTray('sysicon1.ico', handle(This), "PB编程俱乐部") = 1 Then
//隐藏窗口
This.Hide ( )
END IF
Return 1
End If
end event

public function integer wf_addtotray (string as_icon, long al_handle, string as_tips);// 功能:加载图标
// 参数说明:
// string as_icon :加载的图标文件名
// long al_handle :窗口句柄
// string as_tips :显示的tips


IF hIcon = 0 Then // 图标还没有装载
hIcon = LoadImage(0, as_icon, IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
END IF

IF hIcon = 0 Then
MessageBox ("Error", "图标装载失败!")
Return -1
END IF

istr_notifyicondata.cbsize = 88
// 窗口句柄
istr_notifyicondata.hwnd = al_handle
istr_notifyicondata.uid = 0
// 窗口回调事件号,pbm_custom01为1024,pbm_custom02为1025,依此类推
istr_notifyicondata.ucallbackmessage = 1024
// 图标
istr_notifyicondata.hIcon = hIcon
// 标识值,即为显示tips
istr_notifyicondata.tips = as_tips

istr_notifyicondata.uflags = NIF_MESSAGEorNIF_ICONorNIF_TIP//7

// 显示icon关键函数, NIM_ADD 0为显示,1为修改,2为删除
shell_notifyicon ( NIM_ADD, istr_notifyicondata )

return 1



end function

public subroutine wf_removefromtray ();
//删除图标 NIM_DELETE = 2
Shell_NotifyIcon( NIM_DELETE, istr_notifyicondata )

//释放资源
IF hIcon <> 0 Then DestroyIcon (hIcon)
hIcon = 0
end subroutine

on w_systray.create
this.shl_1=create shl_1
this.st_1=create st_1
this.Control[]={this.shl_1,&
this.st_1}
end on

on w_systray.destroy
destroy(this.shl_1)
destroy(this.st_1)
end on

event close;//删除图标、释放资源
wf_RemoveFromTray ()


end event

event open;//加载图标sysicon1.ico
IF wf_AddToTray('sysicon1.ico', handle(this), "PB编程俱乐部") = 1 Then
//隐藏窗口
This.Hide ( )
END IF
end event

type shl_1 from statichyperlink within w_systray
integer x = 174
integer y = 408
integer width = 1047
integer height = 72
integer textsize = -12
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Arial"
boolean underline = true
string pointer = "HyperLink!"
long textcolor = 134217856
long backcolor = 67108864
string text = "PB编程俱乐部 www.kejx.com"
alignment alignment = center!
boolean focusrectangle = false
string url = "http://www.kejx.com"
end type

type st_1 from statictext within w_systray
integer x = 288
integer y = 212
integer width = 855
integer height = 72
integer textsize = -12
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Arial"
long textcolor = 134217730
long backcolor = 67108864
string text = "点最小化可加载到SysTray"
boolean focusrectangle = false
end type

sun1976_2 2006-08-13
  • 打赏
  • 举报
回复
邮箱sunpengsun@163.com
sun1976_2 2006-08-13
  • 打赏
  • 举报
回复
再顶
sun1976 2006-07-18
  • 打赏
  • 举报
回复
自己顶起
sun1976 2006-07-18
  • 打赏
  • 举报
回复
经试验,问题仍未解决
sun1976 2006-07-17
  • 打赏
  • 举报
回复
谢谢各位
+char(0)试过了,不管用,是全乱,不是最后一位乱

现在公司没有pb10,下班回家试试mydata.szTip需要定义成blob型了吧?
lzheng2001 2006-07-17
  • 打赏
  • 举报
回复
pb10应该有把unicode转化成ANSI的函数(试试toAnsi),你查查联机帮助吧.
你把字符串先转成ANSI可能不会有乱码了
dytxy 2006-07-17
  • 打赏
  • 举报
回复
我不知道你出现乱码是怎么样的?如果是最后出现一个乱码,以前我碰到过,你在最后加个char(0)试试

mydata.szTip = "打印服务器 - 中餐"+char(0)
sun1976 2006-07-16
  • 打赏
  • 举报
回复
'interface.exe'是什么?
是我要最小化到托盘的应用程序的名称吗?
ll_icon = LoadIcon(ll_handle,1000) 后面这个参数1000又是根据什么确定的呢?
vc555 2006-07-16
  • 打赏
  • 举报
回复
把图标的图象文件放到pbr里。改ls_name='interface.exe'。
sun1976 2006-07-16
  • 打赏
  • 举报
回复
还有个问题,最小化的时候到了右下角,但是显示不出图标
怎么指定自己要显示的图标啊?
有其他版本的例子也好
一直没搞清ls_name = 'c:\td\interface.exe' 应该如何根据自己的情况设置
谢谢
sun1976 2006-07-16
  • 打赏
  • 举报
回复
多谢
可是不知道该怎么改啊
pb里结构的变量定义成什么类型才能正常传递过去呀
lzheng2001 2006-07-16
  • 打赏
  • 举报
回复
没装pb10自己改代码吧
lzheng2001 2006-07-16
  • 打赏
  • 举报
回复
pb10字符串用了unicode,而这个api用的是ANSI,问题可能就这个原因导致.
圣殿骑士18 2006-07-16
  • 打赏
  • 举报
回复
呵呵
sun1976 2006-07-16
  • 打赏
  • 举报
回复
自己顶起
欢迎帮顶
sun1976 2006-07-16
  • 打赏
  • 举报
回复
up
这是老外开发的IBM风扇控制程序,能自己控制风扇转动的温度和速度。 我仅仅是对界面进行了汉化,并且修正了乱码问题。 打开编辑fancontrol.ini文件,改变active=1,默认为0,退出,运行fancontrol.exe,选择mode为smart即可通过程序控制风扇转动速度。 温度控制值在fancontrol.ini文件中可改变。 我的测试结果,如果温度选择 48度-52度风扇转速1,在CPU降频使用时,风扇的转速噪音基本可以忽略,风扇启停的比例大概是1:1,如把风扇风量固定选1,则CPU温度在45~46度之间变动。 现在感觉要是能最小化就好了,这个程序经过我昨天一晚上的下载东西的测试来看,还是不错的,按上面的设定,CPU温度就没超过52度,应该没什么大碍。 这个程序一关闭,风扇的控制权就交给BIOS了。最新版v018,增加可忽略一些温度的选择。 fancontrol.ini的设置: 1:Active=(0,1,2) 设置风扇控制程序的状态,0为不控制,1为容许控制,2为启动后就自动控制; 2:Cycle=5 设置检测温度的时间间隔,5为5秒; 3:MinimizeToSysTray=(0,1) 设置最小化时的状态,0为不变化,1为最小化到系统托盘; 4:MinimizeOnClose=(0,1) 设置选择关闭程序时的状态,0为关闭,1为最小化到系统托盘; 5:StartMinimized=(0,1) 设置程序启动时是最小化还是隐藏到系统托盘,0为最小化,1为到系统托盘; 6:IconLevels=50 55 60 选择系统图标三种颜色代表的温度,第一位对应黄色,第二位对应橙色,第三位对应红色; 7:FanBeep=1 1 设置风扇启动和停止的时间,单位为ms; 8:MaxReadErrors= 10 设置在出现读温度值错误的次数,程序将转入BIOS控制; 9:IgnoreSensors=PWR,YYY,ZZZ 设置程序忽略控制的温度项目,填入相应的名称,则程序将不考虑此项温度值; 10:Level=48 0 Level=51 1 Level=55 4 Level=60 7 Level=70 128 设置程序控制的温度值和相对应的风扇转速,按系统各部件的最高温度控制; 更多资源请浏览http://www.cnwan.com.cn
=========================== 电子日记本2.53 版说明 =========================== ---------- 新版改进 ---------- V2.53 版改进(2003.11.29): ·增加:同一篇日记可以放在不同的收藏夹里; ·增加:记住上次的备份目录; ·修正:登录对话框上不显示日记文件的路径,更加直观; ·修正:有时点击系统通知区图标会出错; ·修正:字符数统计有误; ·修正:内存泄漏错误; ·修正:修正选项窗口显示和关闭速度太慢; ·修正:将宋体11号的外观调整成了宋体五号(10.5); ·修正:开了金山毒霸后,软件启动速度减慢; ·修正:有时软件最小化后无法锁定的安全隐患; ·修正:在最小化状态下,如果选择右键菜单退出,不会提示保存的BUG; ·修正:行事历时只能使用系统程序默认的目录路径建立行事历文件的BUG; ·修正:其它问题若干; V2.51 版改进(2003.7.3): ·修正:和众多输入法不兼容的严重BUG; ·修正:表情图标下拉框有时会出现滚动条的BUG; V2.5 版改进(2003.6.30): ·增强:换用稳定可靠的存储格式,大大加强了软件的稳定性; ·增强:优化了运行软件的速度,打开日记文件时速度大大加快; ·增强:加强了编辑超级链接的功能; ·增加:编辑器的背景图片功能,并随软件提供了一些背景; ·增加:密码提示问题的功能,减小忘记密码带来的损失; ·增加:从其它日记文件的导入功能; ·增加:最小化后恢复显示时,密码对话框上显示日记本的名字; ·增加:程序在系统启动时运行后,最小化到系统通知托盘; ·增加:插入表情图标到编辑器的功能; ·增加:插入图片到编辑器的功能; ·增加:增加了一些天气供选择; ·增加:记住上次备份的目录; ·修正:收藏夹的不同目录不能收藏同一篇日记的BUG; ·修正:行事历的提醒功能的BUG; ·修正:批量导入文件时,无法导入日记附录的BUG; ·修正:目录框背景色不按所设置的方式显示的BUG; ·修正:最小化锁定后,点击托盘图标,仍然可以进行编辑的BUG; ·修正:打印不正常的BUG; ·删除:删除了“密码箱”和“即时贴”两个鸡肋; ·删除:暂时关闭了模板功能,下一版本将加强这一功能; V2.2 版改进(2003.5.2): ·增加:默认行距的设置; ·修正:运行EDiary时关机,下次启动时会提示未正常关闭; ·修正:自动调整日记题头中的天气时有时会不正常; ·修正:最小化后点通知区的图标时,窗口不显示; V2.1 版改进(2003.3.31): ·增加:日常工具:行事历、即时贴、密码箱; ·增加:加上了在目录显示天气图标的功能; ·增加:对于锁定的日记,允许解锁; ·增加:可以自由设置"我的日记"和"文档资料"的标签; ·增加:记住界面的状态和大小; ·增加:日记时间显示的格式可以自由设置; ·增加:可以设置新建一篇日记时的缺省天气; ·增加:加上了搜索标题的功能; ·增加:加上了用户登记簿; ·增加:加上了重新登陆功能; ·增加:日记附录加上了"大事记载"和"今日总结"; ·增加:修改天气时,自动修改文本中的日记题头; ·增加:登录框中,如果用户选择了文件,则自动填写用户名; ·增加:工具菜单中加上了“建立快捷方式”; ·增加:打开日记文件时显示当前用户所拥有的日记文件列表; ·增加:在日记文件属性窗口中加上了日记和文档的篇数; ·增加:加入了在快速隐藏后恢复显示时是否需要验证密码的选项; ·增加:插入时间时允许插入农历; ·增加:插入模板的功能; ·增加:窗口吸附屏幕边缘的功能; ·增加:插入符号的功能; ·增加:对非正常关闭的日记文件的判断; ·增加:对过去的日记作注释的功能; ·增加:增加在日历中用不同背景颜色标识写过日记的日期的功能; ·增加:日记转换工具中增加了对被损坏的日记文件进行修复的功能; ·增加:将公共设置和个人设置分开; ·修正:当程序最大化时,自动隐藏的任务栏无法显示; ·修正:日历偶尔显示出错; ·修正:修改了工具条的显示方式; ·修正:修正段落行距离设置的错误; ·修正:修正了禁止修改的日记能更改天气的BUG; ·修正:改善了收藏夹; ·修正:在英文环境下界面显示乱码; ·修正:程序最小化锁定后快速隐藏可以将程序解锁的BUG; ·修正:快速隐藏时,窗口迅速消失而不再动画式最小化; ·修正:修正了新建一个节点,修改后未保存的情况下删除会出错的BUG; ·修正:修正了自动插入的日记题头不会按照设置中的缩进的BUG; V2.0 版改进(2003.3.5): ·重新设计了界面布局,使之占用资源大大减少,并支持换肤; ·加强了打印功能,新增了打印预览; ·加强了数据的可靠性和安全性,数据库采用了本工作室另一产品TinyDB; ·新增了备份和恢复的功能; ·新增了文档模板功能; ·新增了农历的功能,支持从1901到2050年的农历显示; ·加强了搜索功能,支持对所有日记和文档的全局搜索; ·新增了附件的功能,对每篇日记文档,可插入任意类型的附件; ·新增了更改目录框背景色的选项; ·新增了对过去的日记锁定(即禁止修改)的功能; ·修改了天气下拉框,自定义的天气会显示在下拉面板上,比原来更方便; ·修正了旧版本中的密码大小写的严重错误,并增加了对任意长度的密码的支持; ·修正了默认字体不能正常设置的错误; ·修正了旧版在Win2000和WinXP下运行会弹出DLL无法定位的错误; ·修正了在大字体环境下标尺和编辑器左右缩进量不相符的错误; ·修正了编辑器的一些BUG; ---------- 使用授权 ---------- 你可以免费使用此软件。 你也可以免费分发此软件,但不能用于商业目的的分发,如捆绑,销售,集成等。同时保证分发此软件包的完整的文件。谢谢!
支持各国字符集和Unicode,邮件加密发送,好用的远程邮件管理,支持APOP/POP3、SMTP、SMTP认证、Hotmail/MSN、Yahoo等邮件协议,强大的过滤功能 功能介绍: 支持虚拟邮箱,更好地管理你的邮件 写信时断电再启动能自动恢复已写的内容 分割发送大邮件并且接收后自动合并,对分割发送的邮件支持断点续传 强大的邮件模板支持附件主题等 优化邮件接收顺序,可以先接收小邮件 显示发送邮件人的IP地址来源 发送加密邮件,邮件更安全 支持IMAP/APOP/POP3/SMTP、Gmail/Hotmail/MSN/Yahoo 、RSS、SSL 发送邮件加密,邮件更安全 强大的邮件过滤和规则功能 强大的远程邮箱管理功能 代理支持:SOCKS4、SOCKS4A、SOCKS5、HTTP1.1代理 接收的邮件再编辑修改功能:删除管理附件,修改内容 邮件备份管理功能 地址本加密功能 邮件特快专递,发邮件无须SMTP服务器,可以一次发送多人 支持各国语言字符集邮件,多种邮件编码,与乱码彻底告别 对接收邮件列表的优化:可以选择先接收较大或较小的邮件 相对路径支持:邮件目录与程序目录相同则可以整体搬移到任何路径下 邮件定时发送 邮件源码编辑、邮件头修改等等 写信的邮件文本编辑、HTML网页编辑、HTML源码编辑 安全稳定的邮件存储 用户可以定义自己的皮肤。 本次修改: 增加备份、从备份恢复的功能 搜索增加在结果中进一步搜索的功能 发送邮件成功或失败弹出窗口、声音提示 从游戏画面切换回来后最小化隐藏的界面出来了的问题 UI细节的改进,默认UI风格改为office2003 密送其他人看到邮件地址的问题 地址本窗口打开后闪动的问题 CSV文件导入地址本的改进 附件管理窗口大小调整后没有记住的问题 邮件点系统托盘显示新邮件摘要的错误问题

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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