请问各位前辈,我要将窗体的borderstyle属性设为0,然后在窗体四周放置一圈image控件,通过image的mouse_down并拖动鼠标改变窗体的大小,就象我们平时用鼠标拖动窗体边缘改变窗体大小一样,这个功能应该怎样实现?
解决方案 »
- 我用vb制作了一个程序,运行一段时间后就会弹出运行错误提示!我一点确定程序就关闭了!如何实现点击确定后重启软件!!真心求教
- 请问各位高手,如何实现把桌面程序和B/S启动图标集成到窗体中呢?类似360保险箱那种事怎么做的?
- 我有一个类,里面有一个属性是collection,我如何给它赋值?
- 问个对象已加载的小问题
- 自定义控件中模块如何调用该自定义控件中一个子控件?
- 不能下载Banasoft Winsock Controls(1.0)
- 报表问题
- IIF的奇怪问题,这两句为什么不等价???
- VB开发程序时候,窗体如何设置?
- 在vb 中如何直接控制modem
- 如何绘制窗体菜单栏的背景(象超级解霸一样用图片作成的背景底纹)
- 查询得到的记录集rs,有什么办法可以引用字段名称?
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_SIZEBOX = &H40000
Private Sub Form_Load()
Dim style As Long
style = GetWindowLong(Me.hwnd, GWL_STYLE)
style = style Or WS_SIZEBOX
SetWindowLong Me.hwnd, GWL_STYLE, style
Me.Width = Me.Width + 10'也可用setwindowpos刷新窗体,这里我用的是改变窗体大小的方法刷新窗体
Me.Width = Me.Width - 10
End Sub
这个例子展示了左右移动的方法,你可以自行加入上下移动,斜移动等
Option Explicit
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
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Const HTLEFT = 10
Private Const HTRIGHT = 11
Private Const WM_NCLBUTTONDOWN = &HA1Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim nParam As Long
With Me
If X > 0 And X < 100 Then
nParam = HTLEFT
ElseIf X > .Width - 100 And X < .Width Then
nParam = HTRIGHT
End If
If nParam Then
Call ReleaseCapture
Call SendMessage(.hwnd, WM_NCLBUTTONDOWN, nParam, 0)
End If
End With
End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Np As MousePointerConstants
With Me
If X > 0 And X < 100 Then
Np = vbSizeWE
ElseIf X > .Width - 100 And X < .Width Then
Np = vbSizeWE
Else '此处还可以继续加
Np = vbDefault
End If
If Np <> .MousePointer Then
.MousePointer = Np
End If
End With
End Sub
对于这个函数本身非常简单,只是向一个hwnd发送一个消息,同时允许传递两个参数过去。但因为windows中消息的数量之多、用途之广,所以,这个函数也是最复杂的。具体的各类消息,可以查看相关的控件和对象,比如基本控件textbox、listbox、treeview等都在msdn的user interface program一章中,可以自己仔细看看。