在vb中如何让窗体vb form 最小化化时先现实淡出效果?

博客访问: 106980
博文数量: 111
博客积分: 3810
博客等级: 中校
技术积分: 1007
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Windows平台
如何做到当我们单击窗口的最小化按钮时,窗口先最小化到任务栏成为按钮,然后消失,图标显示到通知栏呢?大家熟悉的FoxMail能做到,我们也可以做到。
只要我们能截获最小化这个事件发送给窗口的消息,然后换成我们自定义的过程,问题就解决了。大家仔细想一想,当按下最小化按纽时会引发什么事件?最小化时窗口大小会发生变化会引发Form1.Resize事件,我们只要在Form1.Resize事件里用Form1.Visible = False使窗口消失,然后将窗口图标显示到通知栏即可达到我们想要的效果。
怎样判断发生Resize事件时窗口是最小化状态呢?VB里没有现成的做法,我们可以用非富的API函数。API函数库里有一个函数IsIconic(ByVal hwnd As Long),它就是专门判断窗口是否已最小化的。这样当Form产生Resize事件时,用IsIconic函数判断一下窗口是否为最小化状态,就可知道是否用户按了最小化按钮。
最关键的一步就是将图标显示在通知栏里,VB里没有现成的做法,我们还得用API函数。API函数库里有一个函数Shell_NotifyIcon(ByVal dwMessage As Long, lpData As NOTIFYICONDATA),是专门操作(包括添加、修改、删除)通知栏里图标的。
点一下通知栏图标,会出现一些诸如"退出"、"显示窗口"的弹出菜单,怎样实现弹出菜单呢?这个很容易实现,因为点击图标会触发图标所在窗口的MouseDown事件,我们把弹出菜单触发过程写入Form1_MouseDown事件即可。具体例程如下:
第一步、为了增强程序的可移植性,我们新建一个模块,取名为:NoticeIcon,在此模块中定义一些常量、自定义类型、所需的API函数说明及操作通知栏图标的三个自定义函数(添加、修改、删除),模块NoticeIcon具体代码如下所示:
Public Const DefaultIconIndex = 1 '图标缺省索引
Public Const WM_LBUTTONDOWN = &H201 '按鼠标左键
Public Const WM_RBUTTONDOWN = &H204 '按鼠标右键
Public Const NIM_ADD = 0 '添加图标
Public Const NIM_MODIFY = 1 '修改图标
Public Const NIM_DELETE = 2 '删除图标
Public Const NIF_MESSAGE = 1 'message 有效
Public Const NIF_ICON = 2 '图标操作(添加、修改、删除)有效
Public Const NIF_TIP = 4 'ToolTip(提示)有效
'API函数声明
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'判断窗口是否最小化
Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
'设置窗口位置和状态(position)的功能
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'通知栏图标状态
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
'添加图标至通知栏
Public Function Icon_Add(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long
&'参数说明:iHwnd:窗口句柄,sTips:当鼠标移到通知栏图标上时显示的提示内容
&'hIcon:图标句柄,IconID:图标Id号
&Dim IconVa As NOTIFYICONDATA
&With IconVa
&&.hwnd = iHwnd
&&.szTip = sTips + Chr$(0)
&&.hIcon = hIcon
&&.uID = IconID
&&.uCallbackMessage = WM_LBUTTONDOWN
&&.cbSize = Len(IconVa)
&&.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
&&Icon_Add = Shell_NotifyIcon(NIM_ADD, IconVa)
End Function
'删除通知栏图标(参数说明同Icon_Add)
Function Icon_Del(iHwnd As Long, lIndex As Long) As Long
&Dim IconVa As NOTIFYICONDATA
&Dim L As Long
&With IconVa
&&.hwnd = iHwnd
&&.uID = lIndex
&&.cbSize = Len(IconVa)
&Icon_Del = Shell_NotifyIcon(NIM_DELETE, IconVa)
End Function
'修改通知栏图标(参数说明同Icon_Add)
Public Function Icon_Modify(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long
&Dim IconVa As NOTIFYICONDATA
&With IconVa
&&.hwnd = iHwnd
&&.szTip = sTips + Chr$(0)
&&.hIcon = hIcon
&&.uID = IconID
&&.uCallbackMessage = WM_LBUTTONDOWN
&&.cbSize = Len(IconVa)
&&.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
&&Icon_Modify = Shell_NotifyIcon(NIM_MODIFY, IconVa)
End Function
用VB实现窗口图标最小化到通系统托盘(二)
第二步:新建一窗口,取名为:Form1:
1、 设置属性如下:
1、 设置属性如下:
.Name=Form1
.Caption="通知栏图标测试"
.Icon=(Icon),选择一个漂亮的图标
其它默认即可
2、 设置窗口全局变量,并设置初始值
'用于标识窗口是否已经按过最小化按纽
Dim MinFlag As Boolean
Private Sub Form1_Load()
&MinFlag = False
3、 窗口最小化时产生Resize事件,设置Form1.Resize事件,判断窗口是否最小化
Private Sub Form1_Resize()
&'判断窗口是否最小化状态,并且是按最小化按纽后第一次发生Resize事件
&If IsIconic(Me.hwnd) <> 0 And MinFlag = False Then
&&MinFlag = True
&&IcCardMain.Visible = False '隐藏窗口
&&'将窗口图标加入通知栏
&&Call Icon_Add(Me.hwnd, Me.Caption, IcCardMain.Icon, 0)
4、如图所示用菜单设计器建一个弹出菜单,取名为main,main内有一个菜单数组:
菜单一:m_Menu(0) 标题:显示窗口
菜单二:m_Menu(1))标题:退出
菜单事件:
Private Sub m_Menu_Click(Index As Integer)
&Select Case Index
&&Case 0: '当单击"显示窗口"菜单时
&&&Call Icon_Del(Form1.hwnd, 0) '删除通知栏图标
&&&Form1.Show '调出窗口
&&Case 1: '当单击"退出"菜单时
&&&Call Icon_Del(Form1.hwnd, 0) '删除通知栏图标
&&&End '退出程序
&End Select
5、设置Form_MouseDown事件,用于单通知栏图标时调出弹出菜单
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
&L = X \ 15
&'点击通知栏图标,用鼠标右键时调出弹出菜单
&IF L = WM_LBUTTONDOWN Then
&&Me.PopupMenu m_Main
&&'点击通知栏图标,用鼠标左键时,将通知栏图标改为另外的图标
&ElseIF L = WM_LBUTTONDOWN Then
&&Call Icon_Modify(Form1.hwnd,Form1.Caption, LoadPicture("D:\Pic2.ico"), 0)
程序编写完毕,设置工程的主程序为Form1,保存后运行。按下窗口最小化按纽,窗口消失,并在通知栏显示出窗口的图标;将鼠标移到图标上,有"通知栏图标测试"提示文本显示;用鼠标左键单击通知栏图标,图标变成另外的图案;单出鼠标右键,出现如上图所示的弹出菜单,接着单击弹出菜单"显示窗体",通知栏图标消失、窗口又恢复成原来的样子了,单击菜单"退出"则退出程序了。
阅读(76) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。VB编程、代码、技术问题解决方案
求助:为什么用函数SetWindowPos不能够把最小化的窗口变大,显示在当前屏幕?
方案整理者:lrykrist &&&&&& 发布时间:
用VB编程,我的IE窗口最小化后,却怎么也不能够把它变大置前呈现在我的面前?怎么才行呢,请大家多多帮忙!
推荐解决方案
Declare&Function&SetWindowRgn&Lib&&user32&&Alias&&SetWindowRgn&&(ByVal&hWnd&As&Long,&ByVal&hRgn&As&Long,&ByVal&bRedraw&As&Boolean)&As&Long&
这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。
通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状&
Long,执行成功为非零值,失败为0&
参数&类型及说明&
hWnd&Long,将设置其区域的窗口&
hRgn&Long,将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它&
bRedraw&Boolean,若为TRUE,则立即重画窗口&
为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点
其他解决方案
先试试这个好不好使:
Option&Explicit
Public&Type&RECT
&&Left&&&&As&Long
&&Top&&&&&As&Long
&&Right&&&As&Long
&&Bottom&&As&Long
Public&Type&POINTAPI
&&x&&&&&&&As&Long
&&y&&&&&&&As&Long
Public&Type&WINDOWPLACEMENT
&&Length&&&&&&&&&&&&As&Long
&&flags&&&&&&&&&&&&&As&Long
&&showCmd&&&&&&&&&&&As&Long
&&ptMinPosition&&&&&As&POINTAPI
&&ptMaxPosition&&&&&As&POINTAPI
&&rcNormalPosition&&As&RECT
Public&Const&SW_SHOWNORMAL&=&1
Public&Const&SW_SHOWMINIMIZED&=&2
Public&Const&SW_SHOWMAXIMIZED&=&3
Public&Const&SW_SHOWNOACTIVATE&=&4
Public&Declare&Function&BringWindowToTop&Lib&&user32&&_
&&(ByVal&hwnd&As&Long)&As&Long
Public&Declare&Function&FindWindow&Lib&&user32&&_
&&&Alias&&FindWindowA&&_
&&(ByVal&lpClassName&As&String,&_
&&&ByVal&lpWindowName&As&String)&As&Long
Public&Declare&Function&GetWindowPlacement&Lib&&user32&&_
&&&(ByVal&hwnd&As&Long,&lpwndpl&As&WINDOWPLACEMENT)&As&Long
Public&Declare&Function&SetForegroundWindow&Lib&&user32&&_
&&&(ByVal&hwnd&As&Long)&As&Long
Public&Declare&Function&SetWindowPlacement&Lib&&user32&&_
&&&(ByVal&hwnd&As&Long,&lpwndpl&As&WINDOWPLACEMENT)&As&Long
Public&Sub&RestoreWindow(sWindowTitle&As&String)
&&&Dim&hWndCtlApp&As&Long
&&&Dim&currWinP&As&WINDOWPLACEMENT
&&'obtain&the&handle&to&the&control&app
&&&hWndCtlApp&=&FindWindow(vbNullString,&sWindowTitle)
&&&If&hWndCtlApp&Then
&&&&&'prepare&the&WINDOWPLACEMENT&type
&&&&&&currWinP.Length&=&Len(currWinP)
&&&&&&If&GetWindowPlacement(hWndCtlApp,&currWinP)&&&0&Then
&&&&&&&&'determine&the&window&state
&&&&&&&&&If&currWinP.showCmd&=&SW_SHOWMINIMIZED&Then
&&&&&&&&&&&'minimized,&so&restore
&&&&&&&&&&&&currWinP.Length&=&Len(currWinP)
&&&&&&&&&&&&currWinP.flags&=&0&
&&&&&&&&&&&&currWinP.showCmd&=&SW_SHOWNORMAL
&&&&&&&&&&&&Call&SetWindowPlacement(hWndCtlApp,&currWinP)
&&&&&&&&&Else
&&&&&&&&&&&
&&&&&&&&&&&'on&screen,&so&assure&visible
&&&&&&&&&&&&Call&SetForegroundWindow(hWndCtlApp)
&&&&&&&&&&&&Call&BringWindowToTop(hWndCtlApp)
&&&&&&&&&End&If
&&&&&&End&If
19,Q:如何让一个窗口总是处于各窗口的最上层?
&&&&&A:代码如下:
&&&& &Private&Declare&Function&SetWindowPos&Lib&&user32&&(ByVal&hwnd&As&Long,&ByVal&hWndInsertAfter&As&Long,&_&
&&&&&&& &ByVal&X&As&Long,&ByVal&Y&As&Long,&ByVal&cx&As&Long,&ByVal&cy&As&Long,&ByVal&wFlags&As&Long)&As&Long&
&&&& &Const&HWND_TOPMOST&=&-1&
&&& &&Private&Sub&Form_Load()&
&&& &&&&SetWindowPos&Me.hwnd,HWND_TOPMOST,Me.Left/Screen.TwipsPerPixelX,&_
&&&&&&&&&&&&&&Me.Top\Screen.TwipsPerPixelY,Me.Width\Screen.TwipsPerPixelX,&_&
&&&&  &Form1.Height&\&Screen.TwipsPerPixelY,&0&
&&&&&&&End&Sub
用参数WS_RESTORE
仔细看看你传的参数值
Declare&Function&SetWindowPos&Lib&&user32&&Alias&&SetWindowPos&&(ByVal&hwnd&As&Long,&ByVal&hWndInsertAfter&As&Long,&ByVal&x&As&Long,&ByVal&y&As&Long,&ByVal&cx&As&Long,&ByVal&cy&As&Long,&ByVal&wFlags&As&Long)&As&Long&
这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态&
Long,非零表示成功,零表示失败。会设置GetLastError&
参数&类型及说明&
hwnd&Long,欲定位的窗口&
hWndInsertAfter&Long,窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一:&
HWND_BOTTOM&将窗口置于窗口列表底部&
HWND_TOP&将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序&
HWND_TOPMOST&将窗口置于列表顶部,并位于任何最顶部窗口的前面&
HWND_NOTOPMOST&将窗口置于列表顶部,并位于任何最顶部窗口的后面&
x&Long,窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示&
y&Long,窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示&
cx&Long,指定新的窗口宽度&
cy&Long,指定新的窗口高度&
wFlags&Long,包含了旗标的一个整数&
SWP_DRAWFRAME&围绕窗口画一个框&
SWP_HIDEWINDOW&隐藏窗口&
SWP_NOACTIVATE&不激活窗口&
SWP_NOMOVE&保持当前位置(x和y设定将被忽略)&
SWP_NOREDRAW&窗口不自动重画&
SWP_NOSIZE&保持当前大小(cx和cy会被忽略)&
SWP_NOZORDER&保持窗口在列表的当前位置(hWndInsertAfter将被忽略)&
SWP_SHOWWINDOW&显示窗口&
SWP_FRAMECHANGED&强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变&
SetWindowRgn
'一个按钮&,&一个listbox:
Private&Const&WM_SYSCOMMAND&=&&H112
Private&Const&SC_CLOSE&=&&HF060&&'关闭窗体
Private&Const&SC_MINIMIZE&=&&HF020&&'最小化窗体
Private&Const&SC_MAXIMIZE&=&&HF030&&'最大化窗体
Private&Const&SC_RESTORE&=&&HF120&&'恢复窗体大小
Private&Declare&Function&SendMessage&Lib&&user32&&Alias&&SendMessageA&&(ByVal&hwnd&As&Long,&ByVal&wMsg&As&Long,&ByVal&wParam&As&Long,&lParam&As&Any)&As&Long
Private&Declare&Function&FindWindow&Lib&&user32&&Alias&&FindWindowA&&(ByVal&lpClassName&As&String,&ByVal&lpWindowName&As&String)&As&Long
Private&Declare&Function&GetNextWindow&Lib&&user32&&Alias&&GetWindow&&(ByVal&hwnd&As&Long,&ByVal&wFlag&As&Long)&As&Long
Private&Const&GW_HWNDNEXT&=&2
Private&Declare&Function&GetWindowText&Lib&&user32&&Alias&&GetWindowTextA&&(ByVal&hwnd&As&Long,&ByVal&lpString&As&String,&ByVal&cch&As&Long)&As&Long
Private&Declare&Function&GetClassName&Lib&&user32&&Alias&&GetClassNameA&&(ByVal&hwnd&As&Long,&ByVal&lpClassName&As&String,&ByVal&nMaxCount&As&Long)&As&Long
Private&Declare&Function&SetForegroundWindow&Lib&&user32&&(ByVal&hwnd&As&Long)&As&Long
Dim&mwnd()&As&Long
Private&Sub&Command1_Click()
&&&&List1.Clear
&&&&Dim&k&As&Long
&&&&Dim&mhwnd&As&Long
&&&&Dim&cname&As&String&*&260
&&&&Dim&classname&As&String
&&&&mhwnd&=&FindWindow(&IEFrame&,&vbNullString)
&&&&ReDim&Preserve&mwnd(k)
&&&&mwnd(k)&=&mhwnd
&&&&Dim&s&As&String&*&260
&&&&GetWindowText&mhwnd,&s,&260
&&&&Dim&ss&As&String
&&&&ss&=&Left(s,&InStr(1,&s,&Chr(0))&-&1)
&&&&ss&=&&hwnd=&&+&CStr(mhwnd)&+&&&&&标题为:&&+&ss
&&&&List1.AddItem&ss
&&&&If&mhwnd&&&&0&Then
&&&&&&&&Do&While&mhwnd&&&&0
&&&&&&&&mhwnd&=&GetNextWindow(mhwnd,&GW_HWNDNEXT)
&&&&&&&&GetClassName&mhwnd,&cname,&260
&&&&&&&&classname&=&Left(cname,&InStr(1,&cname,&Chr(0))&-&1)
&&&&&&&&If&UCase(classname)&=&&IEFRAME&&Then
&&&&&&&&&&&&k&=&k&+&1
&&&&&&&&&&&&ReDim&Preserve&mwnd(k)
&&&&&&&&&&&&mwnd(k)&=&mhwnd
&&&&&&&&&&&&GetWindowText&mhwnd,&s,&260
&&&&&&&&&&&&ss&=&Left(s,&InStr(1,&s,&Chr(0))&-&1)
&&&&&&&&&&&&ss&=&&hwnd=&&+&CStr(mhwnd)&+&&&&&标题为:&&+&ss
&&&&&&&&&&&&List1.AddItem&ss
&&&&&&&&End&If
&&&&&&&&Loop
&&&&&End&If
Private&Sub&List1_Click()
&&&&Dim&i&As&Long
&&&&i&=&List1.ListIndex
&&&&SendMessage&mwnd(i),&WM_SYSCOMMAND,&SC_MAXIMIZE,&ByVal&0&'使指定ie窗口最大化
&&&&SetForegroundWindow&mwnd(i)
学习中……………………用VB6.0实现将窗体最小化到系统托盘区
方法均测试有效_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用VB6.0实现将窗体最小化到系统托盘区
方法均测试有效
上传于||文档简介
&&V&#8203;B&#03;.&#03;实&#8203;现&#8203;将&#8203;窗&#8203;体&#8203;最&#8203;小&#8203;化&#8203;到&#8203;系&#8203;统&#8203;托&#8203;盘&#8203;区
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢共有 1485 人关注过本帖
标题:[求助]如何保持窗口大小并能使用最小化,关闭按扭
等 级:新手上路
帖 子:604
&&问题点数:0&&回复次数:11&&&
[求助]如何保持窗口大小并能使用最小化,关闭按扭
我想让程序窗口不能让用户调整大小.但又要保留标题栏和最小化,关闭按扭.怎么实现,大家帮帮忙
搜索更多相关主题的帖子:
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
见PK赛 连加的例程,有限制窗体最小size的API使用,只要把最大也限制为那个size。Type POINTAPI
y As LongEnd Type
Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPIEnd Type
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Const GWL_WNDPROC = (-4)Public Const WM_GETMINMAXINFO = &H24
Dim OldProc&Dim mhWnd&
'=================================================='回调Function WinProc&(ByVal hWnd&, ByVal wMsg&, _
ByVal wParam&, ByVal lParam&)
Select Case wMsg&
Case WM_GETMINMAXINFO
Dim MinMax As MINMAXINFO
CopyMemory MinMax, ByVal lParam, Len(MinMax)
MinMax.ptMinTrackSize.x = 567
MinMax.ptMinTrackSize.y = 250'
MinMax.ptMaxTrackSize.x = 808'
MinMax.ptMaxTrackSize.y = 250
' 注意这里 把x统一了 y统一了 去除注释
CopyMemory ByVal lParam, MinMax, Len(MinMax)
WinProc& = 1
Exit Function
End Select
WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)End Function'==================================================
'=================================================='挂钩Sub Hook(ByVal nhWnd&)
If OldProc && 0 Then Exit Sub
mhWnd& = nhWnd&
OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)
End Sub'==================================================
'=================================================='脱钩Sub UnHook()
If OldProc = 0 Then Exit Sub
SetWindowLong mhWnd, GWL_WNDPROC, OldProc
OldProc = 0End Sub'==================================================
等 级:新手上路
帖 子:762
你可直接在窗體的屬性里面設啊,首先讓BorderStyle的屬性直設為1然后再讓MinButton的屬性設為真的。
拥有蓝天的白云,拥有你的我.
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
顶楼上。。。。。
等 级:新手上路
帖 子:604
哇,谢谢大家3楼的办法太好啦
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
我没看仔细……最小化&关闭………………orz我以为最大化也要保留
等 级:新手上路
帖 子:114
LS用Hook保持窗口大小,在编程中用了Hook一定要记得UnHook,用Hook在调试的时候,会忘记UnHook一下。调试时没有UnHook,调试几次会出现VB自动关闭、也有VB调试过程中卡住的情况的。
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
嗯 是这样。VB就是这样 容易引火烧身
等 级:友情版主
威 望:43
帖 子:3036
LZ也可以自定义窗体
Repeat&&Life=SUntil (death);
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
LS说得可爱极了……
版权所有,并保留所有权利。
Powered by , Processed in 0.033120 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reservedvb.net里怎么实现程序开始时,窗体最小化到任务栏?用什么控件 - 爱问知识人
(window.slotbydup=window.slotbydup || []).push({
id: '2491531',
container: s,
size: '150,90',
display: 'inlay-fix'
vb.net里怎么实现程序开始时,窗体最小化到任务栏?
1、用NotifyIcon控件,把NotifyIcon的Icon和Text属性设一下。
2、把Form的WindowState设成Minimized;ShowInTaskbar属性设成False。
3、加Form的Resize代码,例
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
If Me.WindowState = FormWindowState.Minimized Then
意思是让窗体最小化的时候就隐藏。
这样运行的时候看上去窗体是最小化到状态栏上了。
想双击图标的时候显示窗体的话可以加NotifyIcon控件的DoubleClick代码,例
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, By
1、用NotifyIcon控件,把NotifyIcon的Icon和Text属性设一下。
2、把Form的WindowState设成Minimized;ShowInTaskbar属性设成False。
3、加Form的Resize代码,例
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
If Me.WindowState = FormWindowState.Minimized Then
意思是让窗体最小化的时候就隐藏。
这样运行的时候看上去窗体是最小化到状态栏上了。
想双击图标的时候显示窗体的话可以加NotifyIcon控件的DoubleClick代码,例
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
Me.ShowInTaskbar = True
Me.WindowState = FormWindowState.Normal
要是想做右键菜单的话再加ContextMenu控件,用NotifyIcon的ContextMenu属性关联一下。
State设置为Minimized
您的举报已经提交成功,我们将尽快处理,谢谢!
用GUI啊,很方便添加控件的,对各控件编写相应的代码以实现对应的功能。这样就能方便的实现一个系统。
大家还关注

我要回帖

更多关于 vb form 最小化 的文章

 

随机推荐