窗体代码:
Private Sub Command1_Click()
Dim hInst As Long
Dim Thread As Long
'Set up the CBT hook
hInst = GetWindowLong(Me.hWnd, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProc1, hInst, _
Thread)
'Display the message box
MsgBox "This message box has been positioned at (0,0)."
End Sub
Private Sub Command2_Click()
Dim hInst As Long
Dim Thread As Long
'Set up the CBT hook
hInst = GetWindowLong(Me.hWnd, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProc2, hInst, Thread)
'Display the message box
MsgBox "This message box is centered over Form1."
End Sub
模块代码:
Option Explicit
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Declare Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) _
As Long
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Public Declare Function SetWindowsHookEx Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public 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 Declare Function GetWindowRect Lib "user32" (ByVal hwnd _
As Long, lpRect As RECT) As Long
Public Const GWL_HINSTANCE = (-6)
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOACTIVATE = &H10
Public Const HCBT_ACTIVATE = 5
Public Const WH_CBT = 5
Public hHook As Long
Function WinProc1(ByVal lMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
'Show the MsgBox at a fixed location (0,0)
SetWindowPos wParam, 0, 0, 0, 0, 0, _
SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE
'Release the CBT hook
UnhookWindowsHookEx hHook
End If
WinProc1 = False
End Function
Function WinProc2(ByVal lMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim rectForm As RECT, rectMsg As RECT
Dim x As Long, y As Long
'On HCBT_ACTIVATE, show the MsgBox centered over Form1
If lMsg = HCBT_ACTIVATE Then
'Get the coordinates of the form and the message box so that
'you can determine where the center of the form is located
GetWindowRect Form1.hwnd, rectForm
GetWindowRect wParam, rectMsg
x = (rectForm.Left + (rectForm.Right - rectForm.Left) / 2) - _
((rectMsg.Right - rectMsg.Left) / 2)
y = (rectForm.Top + (rectForm.Bottom - rectForm.Top) / 2) - _
((rectMsg.Bottom - rectMsg.Top) / 2)
'Position the msgbox
SetWindowPos wParam, 0, x, y, 0, 0, _
SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE
'Release the CBT hook
UnhookWindowsHookEx hHook
End If
WinProc2 = False
End Function
分享到:
相关推荐
VB自定义的弹出框-包括提示框、确认框、消息显示框、出错提示框等等,样式和系统默认的不一样,看一下演示截图就明白了,是不是挺漂亮的提示框。和网页上的弹出层很相似,挺漂亮。
几款漂亮的气泡提示框 不知道怎么样 大家参考参考
Winform自定义消息框,好看的消息提示Alert源码,国外大神,很基础的实现,可以在此基础上进行优化和进一步调整。Winform控件、Winform优美提示框、消息框、Alert信息弹窗、Notification
一个基于vb6.0编写的消息弹出助手,具有消息弹窗和提示框的功能,Vb源码下载,给你的程序加上很酷的提示助手,并且有多种显示方式,比如从托盘显示、从按钮处显示,还可自定义显示的位置,比如顶部左边、中间显示、...
VB Access数据库简单操作实例,演示一些基本的操作,比如数据添加、删除、浏览、保存等功能,VB新手可学习下...请注意:若是数据库最后一条记录,如果删除将会把文件删除,是否继续删除,程序也会关闭将会弹出提示框。
自定义MessageBox,实现窗口倒计时自动关闭,并且可以暂停倒计时;消息框可以改变图标,弹出时根据图标的不同有不同的提示音;增加按键的Ctrl组合键快捷方式。
一个系统托盘提示控件程序,运行于VB环境,可以作为邮件提示、系统提示、警告等,支持自定义标题和描述文字,支持动态调整信息框内容、支持自定义图标、可选择声音提示文件,队列弹出窗体请求,批量弹出信息框,信息...
内容索引:VB源码,界面编程,弹出框 MsgBox弹出窗口设计器的VB源码,这个程序有点意思,主要是控制系统的Alert窗口元素的布局及对齐方式等,自定义弹出提示的内容,弹出提示的类别,主要是图标的区别,比如警告,提示...
当点击该自定义按钮时弹出提示框“Hello,This Is My First BOS Bill InterFace!”。针对此需求,让我们一起看看如何一步一步通过BOS插件来实现: 【第一步】:由于插件是基于VB语言开发,首先需要在装有金蝶K3的环境...
(30KB) 58,sclcon.zip 不知道你对ie里背景的水印属性有没有印象,现在你在窗体里也可以实现了(162KB) 59,submenu.zip 可以在VB中自定义弹出式子菜单(8KB) 60,zlibtool.zip 较好的一个有进度显示...
(30KB) 58,sclcon.zip 不知道你对ie里背景的水印属性有没有印象,现在你在窗体里也可以实现了(162KB) 59,submenu.zip 可以在VB中自定义弹出式子菜单(8KB) 60,zlibtool.zip 较好的一个有进度显示...
VB源码,界面编程,托盘 一个系统托盘提示控件程序,运行于VB环境,可以作为邮件提示、系统提示、警告等,支持自定义标题和描述文字,支持动态调整信息框内容、支持自定义图标、可选择声音提示文件,队列弹出窗体请求...
用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的...
不弹出脚本错误提示框:在浏览某些网页时会出现脚本错误,要避免这个问题可以在MyIE选项中选中“不弹出脚本错误对话框”. 本地文件浏览:在工具栏上选择文件按钮,会出现一个类似文件管理器的窗口,其中列出了你...
修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框...
4.2.1 创建弹出式日期选择器 135 4.2.2 根据数据库表呈现日历 137 4.3 显示广告 141 4.3.1 在XML文件中保存广告 141 4.3.2 在数据库表中存储广告 144 4.3.3 跟踪显示和转到 145 4.4 显示不同的页面视图 149 4.4.1 ...
创建一个单文件页模型,在【文件】按钮中选择【新建文件】选项,在弹出对话框中选择【Web窗体】或在右击当前项目,在下拉菜单中选择【添加新建项】选项即可创建一个.aspx页面,如图4-2所示。 图4-2 创建单文件页...
客服可自定义聊天信息框中广告图片 客服可以发送邀请,邀请后客户接收页面显示邀请客服名称并且抖动及声音提示! 对接状态为3种(在线访问网址状态,开启聊天窗口状态,已经与客服对接状态),未读消息数量 ...