给VB窗体添加OnMove事件

原创 2007年09月15日 14:33:00

模板内容

 

Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const GWL_WNDPROC = (-4)
Public Const WM_MOVE = &H3
Public Type POINTAPI
        x 
As Long
        y 
As Long
End Type
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long


Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public 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 LongAs Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As LongAs Long


Public Oldproc As Long
Public BnHwnd As Long
Public Function Newproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As LongAs Long
If Msg = WM_MOVE Then '捕获窗体移动事件
'
MsgBox "A"
'
SendMessage BnHwnd, WM_LBUTTONDOWN, 1, 0
'
SendMessage BnHwnd, WM_LBUTTONUP, 1, 0 '将消息发送到按纽,使其发生CLICK事件
    Form1.OnMove
End If
Newproc 
= CallWindowProc(Oldproc, hwnd, Msg, wp, lp)
End Function

 

给窗体定义一个OnMove函数:

 

Public Sub OnMove()
    
Dim point As POINTAPI
    GetCursorPos point
    Label2.Caption 
= "X:" & point.x & " Y:" & point.y
End Sub

 

在窗体的Form_Load事件加入如下代码:

 

Private Sub Form_Load()
Oldproc 
= SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Newproc)
End Sub

VB 窗体最大化,最小化,拖拽事件

Private Sub Form_Resize() If Me.WindowState = 1 Then MsgBox "窗体最小化" End If If Me...
  • boys1999
  • boys1999
  • 2014年11月26日 15:08
  • 509

VB窗体启动、关闭时涉及的主要事件

一、启动窗体时,事件顺序是: 1 Form_Initialize  Initialize 事件即初始化事件,任何窗体生命周期的第一个事件都是Initialize。只要在项目中使用了窗体的名称,或在V...
  • CYL_happygirl
  • CYL_happygirl
  • 2013年10月27日 15:23
  • 4893

vb之窗体关闭事件

QueryUnload 事件   在一个窗体或应用程序关闭之前发生。当一个 MDIForm 对象关闭时,QueryUnload 事件先在 MDI 窗体发生,然后在所有 MDI 子窗体中发生。如果没有窗...
  • u012323351
  • u012323351
  • 2014年11月25日 19:28
  • 1241

VB学习第三周--窗体事件

窗体事件: 1.装载窗体 2.单击窗体 3.双击窗体 4.改变了窗体大小 Public Class Form1 Private Sub Form1_Click(ByVal se...
  • tianzhaixing
  • tianzhaixing
  • 2013年03月27日 22:05
  • 1123

窗体的Resize事件,Load事件如何添加

1.文件-新建-项目-VisualC#-Windows应用程序 2.解决方案管理器 右键单击Form1.cs,查看代码 3. InitializeComponent();右键-转到定义,并添加 ...
  • zhou349398998
  • zhou349398998
  • 2014年05月19日 14:34
  • 1967

vb Form的基本事件

Private Sub Form_Activate() 当此窗体变为活动窗口时触发 End Sub Private Sub Form_Click() 单击时触发 End Sub Private Sub...
  • bianyamei
  • bianyamei
  • 2015年12月23日 13:09
  • 611

GUI_窗体添加按钮并对按钮添加事件案例、布局

package cn.itcast_05; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; im...
  • L1585931143
  • L1585931143
  • 2017年03月29日 00:51
  • 873

VB6 FORM窗体上控件实现滚动的方法

你将所有的控件都放在窗体的 picturebox控件上 除了 PictureBox 控件之外,也可用水平、垂直滚动条创建可滚动的图形视口应用程序。当所包含的图形超过控件范围时,单独一个 Pict...
  • kirawoo
  • kirawoo
  • 2014年09月09日 13:54
  • 6826

Android触摸事件(三)-触摸事件类使用实例

触摸事件AbsTouchEvent与TouchUtils的使用 简单方便地实现界面的拖动与缩放功能
  • u011374875
  • u011374875
  • 2016年04月06日 14:19
  • 2377

vb中窗体的常用属性及其功能

VB中窗体的常用属性及其功能属性名称  功能 属性值及功能   窗体名称  为窗体指定一个名字    Appearance  设置一个窗体运行时是否以3D效果显示 0-Flat:窗体以平面的形式显示1...
  • Ming_5257
  • Ming_5257
  • 2017年06月11日 10:12
  • 1696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给VB窗体添加OnMove事件
举报原因:
原因补充:

(最多只允许输入30个字)