如何在PB中创建图标栏应用
来源:互联网 发布:护国神翼决赛数据图 编辑:程序博客网 时间:2024/06/06 04:36
在PowerBuilder中创建图标栏
---- 在一些应用埸合,常需要在Windows 9.X或Winnt中的图标栏中显示出公司/应用
一、 建立一个应用程序
---- 在创建程序前,先准备一个用于在图标栏中显示的图标文件(.ICO),并准备一个用于弹出窗口显示的图片(BMP 256色)。启动PowerBuilder,创建一个应用(Application),取应用名Starsoft(任意),注意采用模板生成却缺省窗口。
二、 创建要显示的图标窗口
---- 创建一个用于显示成图标的窗口,取名为W_systray,再在上面放置一张BMP图片,式样如下图所示(略)
---- 设置其它窗口的有关信息,如窗口名等。
三、 编程
---- 1、定义全局外部函数
---- PowerBuilder本身并不提供用于在图标栏中把窗口显示成图标的函数,但可以通过Windows API调用来实现,有关在PowerBuilder调用相应的API函数如下(定义在全局外部函数中):
Public Function Integer Shell_NotifyIcon
(Long dwMessage, Any lpData) Library "shell32"
Alias For "Shell_NotifyIconA"
Public Function Long LoadImage (Long hInst,
String lpsz, Long un1, Long n1, Long n2, Long un2)
Library "user32" Alias For "LoadImageA"
Public Function Long DestroyIcon (Long hIcon)
Library "user32" Alias For "DestroyIcon"
Public Function Long SetForegroundWindow (Long hwnd)
Library "user32" Alias For "SetForegroundWindow"
Public Function Long OpenIcon (Long hwnd)
Library "user32" Alias For "OpenIcon"
---- 2、应用入口
---- 在Application的Open Scripts中,输入下列函数:
---- Open (win_systray)
---- 3、窗口函数和Scripts
---- 在W_systray窗口中,创建一个名称为notifyicondata的结构,定义如下:
Cbsize Long
Hwnd Long
Uid Long
Uflags Long
Ucallbackmessage Long
Hicon Long
Sztip any
---- 再定义三个函数:
---- 1、AddToTray(),参数:无;返回值:布尔值(True/False)
// Boolean AddToTray ()
Any nid
if hIcon = 0 then
// the icon has not been loaded yet
hIcon = LoadImage(0, "SysTray.ico",
IMAGE_ICON, 0, 0, LR_LOADFROMFILE)
end if
if hIcon = 0 then
MessageBox ("错误", "不能加载图标!")
Return False
else
nid = SetNotifyIconData (Handle (This), 0,
NIF_MESSAGEorNIF_ICONorNIF_TIP, WM_MOUSEMOVE,
hIcon, "TestTip")
Shell_NotifyIcon (NIM_ADD, nid)
Return True
end if
---- 2、RemoveFromTray ();参数:无;返回值:无
// RemoveFromTray ()
Any nid
nid = SetNotifyIconData (Handle (This), 0,
NIF_MESSAGEorNIF_ICONorNIF_TIP, 0, hIcon, "")
Shell_NotifyIcon (NIM_DELETE, nid)
if hIcon < > 0 then DestroyIcon (hIcon)
hIcon = 0
---- 3、SetNotifyIconData (Long hWnd, Long ID, Long Flags,
Long CallbackMessage, Long Icon, String Tip);
返回值:notifyicondata
// NotifyIconData SetNotifyIconData (Long hWnd, Long ID,
Long Flags, Long CallbackMessage, Long Icon, String Tip)
Char MyTip [64]
NotifyIconData NidTemp
NidTemp.cbSize = 88 // Len (NidTemp)
NidTemp.hWnd = hWnd
NidTemp.uID = ID
NidTemp.uFlags = Flags
NidTemp.uCallbackMessage = CallbackMessage
NidTemp.hIcon = Icon
MyTip = Tip + Char (0)
NidTemp.szTip = MyTip
return NidTemp
最后,在窗口的有关事件中输入函数:
Open 事件
if AddToTray () then Visible = False
Close 事件
RemoveFromTray ()
CloseQuery 事件
if CanClose then
Return 0
else
Visible = False
Return 0
End if
Resize事件
if sizetype = 1 then Visible = False
四、 测试
---- 完成上述工作后,就可以
---- 这时,最小化该窗口,不会在Windows 9.x或Windows NT的任务栏中显示,而是缩小成一个在图标栏中的图标。
---- 上述示例在Windows 9.8、Windows NT V4.0和PowerBuilder 6.5下测试通过。
- 如何在PB中创建图标栏应用
- 在PowerBuilder中创建图标栏应用
- android中在代码中创建应用的快捷图标
- 如何在pb中创建COM组件,并在asp中调用并返回结果集?
- 如何在pb中创建COM组件,并在asp中调用并返回结果集
- 如何在 Android 应用中使用 FontAwesome 图标
- 如何在 Android 应用中使用 FontAwesome 图标
- 在PB应用中收发电子邮件
- 在PB中应用AutoCAD图形数据库
- 在PB应用中收发电子邮件
- 如何在PB中实现串口编程
- 如何在PB中实现透明DATAWINDOW?
- 如何在PB中实现透明DATAWINDOW?
- 如何在PB中编写PING代码
- 如何在PB中加载声音文件?
- 在PB程序中如何设置打印机?
- 如何在PB中实现串口编程
- 如何在PB中取得硬件识别码
- Log4Net使用指南
- 崭新的网站
- 如何在DataGrid里面产生滚动条而不滚动题头
- Log4j日志管理系统简单使用说明
- 2007软件2.0大会,报名火热进行中,现在订票,精彩好礼二选一!
- 如何在PB中创建图标栏应用
- The Inventor Mentor-第三章 节点与组
- 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好
- c#中数据邦定7法
- JNDI
- XFire 入门
- Stage 1 clear. Have a rest and turn to stage 2.
- 最后一天实习生活
- 第一章 U N I X基础知识