当把mouse移到窗体的左下角或是右下角时,mouse变成可以改变窗体大小的箭头,有什么办法让它不变呢?也就是不给用户改变窗体大小 ,但要有最大化与最小化按钮.
解决方案 »
- 如何判断一个生成的类的实例还存在不存在,存在就释放它,而后再生成这个类的新的实例
- 求一算法(可能涉及组合与排列),就这么多分了,求救啊
- VB怎么读取和写入到文本文件中(有规定的格式)
- 问题急等
- 自定义函数的返回结果可以是数组吗?
- vsflexgrid7.0控件的输入法问题(2/2)
- 200分:[加急] ***在VB中调用chm格式的帮助文件的API。 OK后马上结贴。
- 请问可以在mshflexgrid控件的表格中之间更新数据库的数据吗?
- 我以前写的一个软件,很好用,就分享给大家了!(请大家试用吧) (高分,请跟贴!)
- ?????请问大虾:我已获取一个ICON的Handle,如何将这个Icon显示在CommandButton的Picture属性上
- 请问Unload Me和 END 有什么区别。容易吧:)
- 关于dao 的一个奇怪的问题
检测mouse的坐标
if mouse.x and mouse.y then
设置mouse为原来的图标
Option Explicit
Private Sub Form_Load()
Me.Width = 400 * 15
Me.Height = 200 * 15
Call SubClass(Me.hwnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnSubClass(Me.hwnd)
End Sub'模块
Option Explicit
Public defWindowProc As Long
Public minX As Long
Public minY As Long
Public maxX As Long
Public maxY As LongPublic Const GWL_WNDPROC As Long = (-4)
Public Const WM_GETMINMAXINFO As Long = &H24Public Type POINTAPI
x As Long
y As Long
End TypeType MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End TypePublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Public Sub SubClass(hwnd As Long)
On Error Resume Next
defWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnSubClass(hwnd As Long) If defWindowProc Then
SetWindowLong hwnd, GWL_WNDPROC, defWindowProc
defWindowProc = 0
End If
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
Select Case uMsg
Case WM_GETMINMAXINFO
Dim MMI As MINMAXINFO
CopyMemory MMI, ByVal lParam, LenB(MMI)
With MMI
.ptMinTrackSize.x = 400
.ptMinTrackSize.y = 200
.ptMaxTrackSize.x = 400
.ptMaxTrackSize.y = 200
End With
CopyMemory ByVal lParam, MMI, LenB(MMI)
WindowProc = 0
Case Else
WindowProc = CallWindowProc(defWindowProc, hwnd, uMsg, wParam, lParam)
End Select
End Function
To lhxtx(再见理想): 我看了,你的不行,因为对于标题区,不是窗体的,不用其它的方法是不可以访问的。 但在那里还是会变成箭头。 而且对其它的下面两个角落,这样做也没有见交效。
设置窗体的BorderStyle为1,MaxButton=false,MinButton=True不过最注意一点是:改BorderStyle时,千万要用记事本或是其它的东西来打开窗体文件,而不直接在VB中改,因为那样会把最小化与最大化搞不见的。
只要在form的属性BorderStyle中选择1-FixedSingle就行了