vb 中实现窗口最小化的代码是什么?

 我来答
百度网友e36cd45d9c9
2006-07-16 · 超过24用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
要实现窗口最小化必须满足以下条件:
1:按下最小化按钮,窗体不可见
2:最小化后,最小化窗体的图标必须出现在任务栏的通知区域中
3:当双击通知区域中的图标时,窗体又显示出来,同时通知区域中的图标消失.

要满足上面的条件:
1:首先屏蔽窗体中系统自带的最小化图标,即Form.MinButton=False
2:声明1个API函数:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

注意:上面这个API函数在XP中没有别名,将别名去掉后为:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll"(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

3:声明7个常数:
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203

4:定义1个NOTIFYICONDATA类型
Public Type NOTIFYICONDATA
cbSize as Long
hWnd as Long
uId as Long
uFlags as Long
uCallBackMessage as Long
hIcon as Long
szTip as String
End Type
5:声明一个nid的类型
Public nid as NOTIFYICONDATA

思路清晰后,开始编写代码
1:在窗体中画1个Command,它的Caption属性为:"最小化"
2:将窗体Form的MinButton的属性设为:"False"
3:在窗体中添加1个模块,模块中的代码为:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll"(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203

Public Type NOTIFYICONDATA
cbSize as Long
hWnd as Long
uId as Long
uFlags as Long
uCallBackMessage as Long
hIcon as Long
szTip as String
End Type
Public nid as NOTIFYICONDATA
4:编写Command的单击事件:
Private Sub Command1_Click()
nid.cbSize = Len(nid)
nid.uId = vbNull
nid.hWnd = Me.hWnd
nid.uFlags = NIF_TIP Or NIF_MESSAGE Or NIF_ICON
nid.uCallBackMessage = WM_MOUSEMOVE
nid.hIcon = Me.Icon
nid.szTip = "窗体最小化"
Shell_NotifyIcon NIM_ADD, nid
Me.Hide
End Sub
5:编写窗体的MouseMove事件:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
msg = X / 15
If msg = WM_LBUTTONDBLCLK Then
Me.Show
Shell_NotifyIcon NIM_DELETE, nid
End If
End Sub
按F5启动,单击Command,看看通知区域中是不是多了个窗体的图标?双击该图标,窗体又显示出来了!
糜霓么兰芝
2020-02-12 · TA获得超过1022个赞
知道小有建树答主
回答量:1889
采纳率:100%
帮助的人:9.1万
展开全部
如果用api的话
showwindow

sendmessage都可以实现让窗口最小化
showwindow(hwnd,
sw_minimize);
public
const
sw_minimize
=
6
sendmessage(hwnd,
wm_syscommand,
sc_minimize,
0);
public
const
wm_syscommand
=
&h112
public
const
sc_minimize
=
&hf020&
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2300380
2006-07-14 · TA获得超过207个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:475万
展开全部
me.hide
是隐藏
me.show
是显示
不知道你希望的最消化是那种
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nnigou
2006-07-14 · TA获得超过983个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1547万
展开全部
Me.WindowState = 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
danver1207
2006-07-14 · TA获得超过127个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:242万
展开全部
me.windowstate=vbminimized
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式