VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在Visual Basic中如何拖动窗体或控件
发表评论(0)作者:, 平台:, 阅读:11856, 日期:2000-03-12
在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函数可以实现许多你意想不到的功能。如果需要更多有关VB的

其它经验与技巧。建议访问http://vb2000.kstar.com站点。