选择显示字体大小

在powerbuilder中创建图标栏应用

国防科技大学理学院 陈玉教
邮编: 410073

---- 在一些应用埸合,常需要在windows 9.x或winnt中的图标栏中显示出公司/应用程序的图标,在单击图标时弹出相应的窗口,就象金山词霸一样。下面介绍采用powerbuilder中在windows 9.x和windows nt下显示图标栏图标的方法。

一、 建立一个应用程序
---- 在创建程序前,先准备一个用于在图标栏中显示的图标文件(.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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons