说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何使窗体最小化并消失

HTML文档下载 WORD文档下载 PDF文档下载
VB如何使窗体最小化并消失

如何做到当我们单击窗体的最小化和关闭按钮时,窗体先最小化到任务栏成为按钮,然后消失呢?金山词霸能做到,我们也可以做到。

只要我们能截获这两个事件发送给窗体的消息,然后换成我们自定义的过程,问题就解决了。首先,用CloseWindow使窗体最小化;然后,用Form1.Visible = False使窗体消失。

这两个事件共用一个消息:WM_SYSCOMMAND,不同的是传递给窗口函数的wp参数。为取得这两个事件的wp参数,有两个方法

1、用vb的常数,这是一些以SC_为前缀的常数(S代表SYS,C代表COMMAND)

2、编程取得它们,事实上,我采用的是这种方法。在窗口放两个文本框,当任何WM_SYSCOMMAND消息发生时,先在文本框里显示wp和lp的值,很容易的发现,单击最小化按钮时,wp=61472;单击关闭按钮时,wp=61536。现在就可以开始编程了。

为了实现对窗体的子类处理,采用MsgHook32控件。

源代码如下:

Option Explicit

' API函数声明
Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long

' 常数声明
Private Const WM_SYSCOMMAND = &H112

Private Sub Form_Load()
Msghook1.HwndHook = Form1.hwnd
' 将Msghook1绑定到Form1上
Msghook1.Message(WM_SYSCOMMAND) = True
' Msghook1拦截WM_SYSCOMMAND消息
End Sub

Private Sub Msghook1_Message(ByVal msg As Long, ByVal wp As Long, ByVal lp As Long, result As Long)
Text1.Text = wp
Text2.Text = lp
If wp = 61472 Or wp = 61536 Then
' 单击的是最小化或关闭按钮
CloseWindow Form1.hwnd
' 最小化窗口
Form1.Visible = False
' 使窗口消失
Unload Form1
' 卸载窗口。如果有通知栏图标,就不用卸载窗口
Else
Call Msghook1.InvokeWindowProc(msg, wp, lp)
' 其他的事件由默认窗口函数处理
End If
End Sub

不仅是单击窗口右上角的按钮,其实,在系统菜单里选择最小化和关闭菜单项,也有同样的效果。

Windows Server 2012 VHDX格式揭秘 Rovio将赶超Zynga 成为全球最受欢迎游戏公司 Netflix基于AWS的大数据平台Hadoop架构解析 微软开始提供Windows Embedded测试版系统 Aaron Swartz自杀原因存疑 引发互联网连锁反应 重金吸引开发者 BlackBerry10应用36小时增1.5万 把数据中心搬入“空间站” Dell和Intel对OpenStack新兴公司Mirantis投资 快讯:马云自5月10日起不再担任CEO职务 Web工程师必备的43款可视化工具 中国电信天翼开放平台2012年度数据:API调用量破亿 iOS走向开放:UC浏览器iPhone版实现云下载 让Dreamweaver支持cshtml (MVC Razor环境) iOS付费榜首:日历应用Fantastical开发者专访 玩转AdMob移动广告:捕鱼达人的猎财之道 12306抢票插件拖垮GitHub 展望2013 jQuery核心团队成员谈其发展路线 Facebook社交视觉搜索分析:引入“竞价排名”? 移动广告现状5大问题解析 Google将于月底举行Google Glass开发者大赛 分享29个超赞的响应式Web设计 Facebook图谱搜索和谷歌搜索有何不同? Facebook向美国iPhone用户提供免费电话 VMware CTO Steve Herrod离职 加盟风险投资公司 维基百科基金会推出众包旅游项目Wikivoyage 最舒适程序员:工作外包给中国 自己却偷懒 Evernote正在与苹果联合开发硬件记忆工具,未来两年公司上市 Fusion-io发布ioScale 全闪存数据中心时代到来? Agent Dash游戏设计之美:如何用2D打造3D体验? 开源项目文档应规避的13处“硬伤” 李开复:Graph Search将可与谷歌搜索媲美 Suspicious pointer conversion 是什么警告啊? 有哪位高手知道微软提供的的简繁互转的组件是哪个,在线等待,高分送 紧急求助!!既可以选择还可以接受用户输入的下拉选框!!万分感谢!! 在jsp页面中如何实现显示一行文字消息后再更改该文字的内容?? 高分求Excel基本操作代码,如打开关闭文件、取单元格数据之类的 关于MSHFLexGrid与ADODC的几个问题 什么是内建数据库? 请问Delphi 6怎么样才能激活Invokable向导? 安装softice后,不能启动机器了!!!!!!!! 听听StringGrid 隐藏行的好建议,别讲RowHeight[i]=0阿 关于VB调用Excel打印报表的问题 哪有电脑知识问答题? 我有项目,有谁参加??? 请问哪儿能下载模块 ming? 这样的情况还能用StringGrid吗???如果不可以那用什么?DBgrid? 致JAVAMAIL配置不成功者--即编译通过但运行不了的朋友 请问asp.net 项目开发中,页面设计与代码编写如何分工 这个地方怎么回事?(代码) 不能上网??为什么?我想不明白?? ASP包含文件问题,给分50,在线等候ING。。。。 怎樣在applet中控制button的大小和具體位置? 从Microsoft操作系统的发展中,我们可以看到操作系统最终目标是OFS,它基于一种内建数据库技术,最终什么样的数据库,也就是何为内建数据 鼠标左键按下拖动是对应的windows消息是哪个?(像WM_LBUTTONDOWE) 与市场上通过网站的web发送短信相反,web能接受短信吗?如何完成? 与市场上通过网站的web发送短信相反,web能接受短信吗?如何完成? 我有项目,有谁参加??? 要用jdbc连接两个用户怎么办? 怎样取出字符串? 请问哪里有支持代理服务器的telnet客户端? 用vbscript将list框里的多选的值读出来,急!在线等待 想在北京找个JAVA或XML及相关技术开发方面的工作(大学毕业后工作三年,然后读了统招的研究生) 用VBscript 取当前页form 中项目的值。 请问在JBuilder7中,如何引入javax.xml.parsers.*;org.xml.sax.*;org.w3c.dom.*; 急需要原代码 如何在delphi 6中的 采单加入图片背景? tomcat 问题 请指教:Wrf文件用什么软件打开呢? 请大家帮忙,谢谢 这个问题如何解决!特来请教! 怎么样去掉工具栏呀(基于单文档的应用程序)? 字符串的连接 如何使得图片(TImage)半透明显示? 想让图片有朦胧的感觉 初学者的问题:SQL Server的两个小问题,希望高手指教,多谢了! win2000的脚本编辑器 关于VC的串口通信,在线等待,大家多帮忙啊! 运行http://localhost:7001/helloclient测试EJB,出现了以下错误 如何找到我的IBM笔记本的主板的型号? 字符串的连接 怎么比较数据? 系统的.OCX控件注册问题 请问 uint_fast32_t 和 uint32_t 有什么区别?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘