现在的许多Windows下的应用程序,都采用了图形化的界面,例如Winamp等。这样做的好处是可以使程序界面更漂亮生动,更具吸引力。但是在这样的界面下就不能使用Windows原来的标题条了,否则会影响界面的美观性。那么在没有标题条的情况下如何用鼠标拖动窗体或者拖动其它的控件呢?
其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体讲下实现方法:
①新建立个项目,名称为:test.vbp。
②添加个模块,名称为:test.bas,并且在声明部分加入以下代码:
declare function releasecapture lib"user32"()as long
declare function SendMessage lib"user32"alias"SendMessage"(byval hwnd as long,byval wmsg as long,byvalwparam as long,lparam as any)as long
public const wm_sysCommand=&h112
public const sc_move=&hf012
其中Releasecapture函数是用来释放鼠标捕获的,SendMessage函数是个在Windows API中非常重要的函数,在这里的作用是用来Windows发送移动窗体的消息。wm_sysCommand是向Windows发送消息的常量。sc_move是控制移动窗体的常量。请注意:sc_move的赋值定要是&hf012,它表示鼠标对象。
③在窗体的mousedown过程中加入以下代码:
releasecapture
SendMessage Form1.hwnd,wm_sysCommand,sc_move,O
其中releasecapture函数用来释放程序对鼠标的捕获,SendMessage函数向Windows发送移动窗体的消息。
④保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动,就和其它著名的应用程序样。
以上讲述了如何在Visual Basic中用鼠标拖动窗体,其实,控件的拖动的原理是样的。
例如:以下代码可以实现图片框的拖动:
releasecapture
SendMessage Picturel.hwnd,wm_sysCommand,sc_move,O
其实,运用API函数可以实现许多你意想不到的功能。