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

在Visual Basic中如何拖动窗体或控件

HTML文档下载 WORD文档下载 PDF文档下载
在Visual Basic中如何拖动窗体或控件


现在的许多Windows下的应用程序,都采用了图形化的界面,例如:WINAMP等!
这样做的好处是可以使程序界面更漂亮生动,更具吸引力。但是在这样的界面下就
不能使用Windows原来的标题条了,否则会影响界面的美观性。那么在没有标题条
的情况下如何用鼠标拖动窗体呢?或者拖动其它的控件呢?
其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体
讲一下实现方法:
1.新建立一个项目,名称为:test.vbp.
2. 填加一个模块,名称为:test.bas,并且在声明部分加入以下代码:
Declare Function ReleaseCapture Lib "user32" () As Long
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 Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF012
其中ReleaseCapture函数是用来释放鼠标捕获的,SendMessage函数是一个在
WindowsAPI中非常重要的函数,在这里的作用是用来向Windows发送移动窗体的消
息。WM_SYSCOMMAND是向Windows发送消息的常量。SC_MOVE是控制移动窗体的常量。
请注意:这里SC_MOVE的赋值一定要是&HF012,它表示鼠标对象。
3.在窗体的MouseDown过程中加入以下代码:
ReleaseCapture
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
其中ReleaseCapture函数用来释放鼠标捕获,SendMessage函数向Windows发送
移动窗体的消息。
4.保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。就和
其它著名的应用程序一样。
以上讲述了如何在VB中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。
例如以下代码可以实现图片框的拖动:
ReleaseCapture
SendMessage Picture1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
其实,运用API函数可以实现许多你意想不到的功能。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘