Welcome

首页 / 软件开发 / VB / VB编程技巧三则

VB编程技巧三则2010-03-121、VB中实现动态移动控件

窗体中的控件如按钮、文本框等一般在运行时位 置是固定不变的,但为了能给用户更方便的功能,我们可以做到在运行时动态移动控件的 位置,比如我们可以允许用户随便将按钮放到自己喜欢的位置,而并非界面中固定的位置。 其实这个功能实现起来是很容易的,只需要使用API函数SendMessage传递控件移动的消息 即可。

下面是一个例子,当用户单击按钮后可以移动按 钮的位置。

在窗体的总体声明部分声明SendMessage函数及 用到的两个常量:

Private Declare Function SendMessage
Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As
Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Const WM_SYSCOMMAND = &H112
Const SC_MOVE = &HF012

在窗体中添加一命令按钮Command1,双击写代码 如下:

Private Sub Command1_Click()
Dim retn%
retn = SendMessage(Command1.hwnd,
WM_SYSCOMMAND, SC_MOVE, 0)
End Sub

在窗体中添加命令按钮Command2,双击写如下代 码:

Private Sub Command2_Click()
unload me
End Sub

运行此程序,单击命令按钮1,然后移动鼠标可以 发现按钮的边框跟随鼠标移动,在新位置处单击鼠标就可以按钮移动过去了,单击按钮2可 结束程序。

2、保持窗口的比例不变。

WINDOWS下的窗口一般都可以通过鼠标拖动来扩 大,有些时候我们需要控制窗口的比例不变,以防窗口比例失调时造成界面的不协调。要做 到这一点,可以利用API函数CallWindwosProc,当得到用户调整窗口的消息时,判断X或Y方 向上的比例是否和原来的比例一样,如果不一样,则调整为一样。下面是一个例子。

在窗体中加一个命令按钮Command1,双击写如下 代码:

Private Sub Command1_Click()
Unload Me
End Sub

双击窗体写如下代码:

Private Sub Form_Load()
OldWindowProc = SetWindowLong( hwnd, GWL_WNDPROC, _
AddressOf NewWindowProc)
End Sub