hur.cn - 华软网

 热门搜索

谁有pb的例子,关于程序运行最小化后在任务栏里面,双击有最大化

  作者:未知    来源:网络    更新时间:2019/1/5
谁有pb的例子,关于程序运行最小化后在任务栏里面,双击有最大化


非常谢谢啦!在线期待
------华软网友回答------
Char MyTip[64]
NotifyIconData Nid
if hicon=0 then
hicon=loadImage(0,"SysTray.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE)
end if
if hicon=0 then
Messagebox("EITOr","Can't load icon!")
else
Nid.cbSize=88//需填人数据结构的长度
Nid.HWnd=Handle(This)//接收托盘图标消息的窗口句柄
Nid.Uid=0//为图标所设置的ID值,由于有的程序有多个图标
Nid.UFlags=NIF_MESSAGEorNIF_ICONorNIF_TIP//对托盘图标操作的标志
Nid.ucallbackMessage=WM_MOUSEMOVE//标志应用程序的消息
Nid.hicon=hicon//托盘图标指针
MyTip= "s6server" + Char(0)
Nid.szTip=MyTip//提醒字符串
Shell_NotifyIcon(NIM_ADD,nid)
this.visible=false
end if
------华软网友回复------
Public Function Long OpenIcon  (Long hwnd) Library "user32" Alias For "OpenIcon"
------华软网友回复------
楼上的,代码不全,添全了才行啊
------华软网友回复------
PB9.0的例子
1。application
forward
global type systray from application
end type
global transaction sqlca
global dynamicdescriptionarea sqlda
global dynamicstagingarea sqlsa
global error error
global message message
end forward

global type systray from application
string appname = "systray"
end type
global systray systray

type prototypes
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"

end prototypes

on systray.create
appname="systray"
message=create message
sqlca=create transaction
sqlda=create dynamicdescriptionarea
sqlsa=create dynamicstagingarea
error=create error
end on

on systray.destroy
destroy(sqlca)
destroy(sqlda)
destroy(sqlsa)
destroy(error)
destroy(message)
end on

event open;Open (w_systray) 
end event



------华软网友回复------
2.菜单 m_popup
forward
global type m_popup from menu
end type
type m_item from menu within m_popup
end type
type m_恢复 from menu within m_item
end type
type m_计算器 from menu within m_item
end type
type m_about from menu within m_item
end type
type m_- from menu within m_item
end type
type m_退出 from menu within m_item
end type
type m_item from menu within m_popup
m_恢复 m_恢复
m_计算器 m_计算器
m_about m_about
m_- m_-
m_退出 m_退出
end type
global type m_popup from menu
m_item m_item
end type
end forward

global type m_popup from menu
m_item m_item
end type
global m_popup m_popup

on m_popup.create
m_popup=this
call super::create
this.m_item=create m_item
this.Item[UpperBound(this.Item)+1]=this.m_item
end on

on m_popup.destroy
call super::destroy
destroy(this.m_item)
end on

type m_item from menu within m_popup
m_恢复 m_恢复
m_计算器 m_计算器
m_about m_about
m_- m_-
m_退出 m_退出
end type

on m_item.create
call super::create
this.text = "popup"
this.toolbaritemtext = "m_item"
this.m_恢复=create m_恢复
this.m_计算器=create m_计算器
this.m_about=create m_about
this.m_-=create m_-
this.m_退出=create m_退出
this.Item[UpperBound(this.Item)+1]=this.m_恢复
this.Item[UpperBound(this.Item)+1]=this.m_计算器
this.Item[UpperBound(this.Item)+1]=this.m_about
this.Item[UpperBound(this.Item)+1]=this.m_-
this.Item[UpperBound(this.Item)+1]=this.m_退出
end on

on m_item.destroy
call super::destroy
destroy(this.m_恢复)
destroy(this.m_计算器)
destroy(this.m_about)
destroy(this.m_-)
destroy(this.m_退出)
end on

type m_恢复 from menu within m_item
end type

on m_恢复.create
call super::create
this.text = "恢复(&R)"
end on

on m_恢复.destroy
call super::destroy
end on

event clicked;//删除图标、释放资源
w_systray.wf_RemoveFromTray()
//加载新图标
w_systray.wf_AddToTray('sysicon2.ico', handle(this), "PB编程俱乐部")
w_systray.POST Show()

end event

type m_计算器 from menu within m_item
end type

event clicked;run('calc.exe')
end event

on m_计算器.create
call super::create
this.text = "计算器(&C)"
end on

on m_计算器.destroy
call super::destroy
end on

type m_about from menu within m_item
end type

on m_about.create
call super::create
this.text = "关于(&A)"
end on

on m_about.destroy
call super::destroy
end on

event clicked;open(w_about)
end event

type m_- from menu within m_item
end type

on m_-.create
call super::create
this.text = "-"
end on

on m_-.destroy
call super::destroy
end on

type m_退出 from menu within m_item
end type

on m_退出.create
call super::create
this.text = "退出(&X)"
end on

on m_退出.destroy
call super::destroy
end on

event clicked;close(parentwindow)
end event


------华软网友回复------
3.结构体
global type str_notifyicondata from structure
long cbsize
long hwnd
long uid
long uflags
long ucallbackmessage
long hicon
character tips[64]
end type


------华软网友回复------
up
------华软网友回复------
4.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


------华软网友回复------
forward
global type w_about from window
end type
type cb_1 from commandbutton within w_about
end type
end forward

global type w_about from window
integer width = 1216
integer height = 668
boolean titlebar = true
string title = "关于本系统"
boolean controlmenu = true
windowtype windowtype = response!
long backcolor = 67108864
string icon = "JaguarProfile!"
boolean center = true
cb_1 cb_1
end type
global w_about w_about

on w_about.create
this.cb_1=create cb_1
this.Control[]={this.cb_1}
end on

on w_about.destroy
destroy(this.cb_1)
end on

type cb_1 from commandbutton within w_about
integer x = 402
integer y = 192
integer width = 329
integer height = 128
integer taborder = 10
integer textsize = -12
integer weight = 400
fontcharset fontcharset = ansi!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Arial"
string text = "确定"
boolean default = true
end type

event clicked;close(parent)
end event


------华软网友回复------
上面是1个PB9的完整历程,包括最小化,双击,右键
------华软网友回复------
good
------华软网友回复------
mark

------华软网友回复------
有个问题!

右键单击任务栏小图标,程序会在任务栏出现!,我希望它不要出现
------华软网友回复------
问题1:右键弹出菜单为什么要拉出窗口?
问题2:ue_event事件是如何定义出来,如何调用的?
问题3:定义单击恢复窗口恢复后,点击窗口最小化按钮会长时间卡壳,why?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。