⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 在vb中可以限制窗体的最小值吗.txt

📁 以电子书的形式收集了VB一些常见问题解决方法,可以很方便的查找自己需要解决的问题.对一些VB初学者很用.
💻 TXT
字号:
你 可 以 在 Resize事 件 中 进 行 限 制 。 如 : 
    Private Sub Form_Resize() 
     If WindowState The Exit Sub 
     If Width < 2000 Then Width = 2000 
     If Height < 2000 Then Width = 2000 
    End Sub 
    如 果 你 要 是 熟 悉 MsgBlaster这 样 的 控 件 (可 以 在 QA000580 “vb6中动态建立带子菜单的菜单”下 载 ), 你 还 可 以 截 取 Windows的 WM_WINDOWPOSCHANGING这 样 的 消 息 , 这 样 可 以 使 程 序 的 外 观 上 更 好 看 。 具 体 的 做 法 参 考 QA000727 “在msgblst中如何处理指向结构变量的地址”。 
<END> 
下 列 代 码 可 以 锁 定 窗 口 大 小 : 
    Option Explicit 
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As Any, lpSource As Any, ByVal cBytes&) 
    Private Declare Function CallWindowProc& Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc&, ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&) 
    Private Declare Function SetWindowLong& Lib "User32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) 
    Private Type POINTAPI 
     x As Long 
     y As Long 
    End Type 
    Private Type MINMAXINFO 
     ptReserved As POINTAPI 
     ptMaxSize As POINTAPI 
     ptMaxPosition As POINTAPI 
     ptMinTrackSize As POINTAPI 
     ptMaxTrackSize As POINTAPI 
    End Type 
    Private procOld As Long 
    Private udtMMI As MINMAXINFO 
     
    Private Function WindowProc(ByVal hWnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
     Select Case iMsg 
     Case &H24 'WM_GETMINMAXINFO=&H24 
     Dim udtMINMAXINFO As MINMAXINFO 
     CopyMemory udtMINMAXINFO, ByVal lParam, 40& 
     With udtMINMAXINFO 
     .ptMaxSize.x = udtMMI.ptMaxSize.x 
     .ptMaxSize.y = udtMMI.ptMaxSize.y 
     .ptMaxPosition.x = 0 
     .ptMaxPosition.y = 0 
     .ptMaxTrackSize.x = .ptMaxSize.x 
     .ptMaxTrackSize.y = .ptMaxSize.y 
     .ptMinTrackSize.x = udtMMI.ptMinTrackSize.x 
     .ptMinTrackSize.y = udtMMI.ptMinTrackSize.y 
     Debug.Print .ptMaxSize.x & "," & .ptMaxSize.y 
     End With 
     CopyMemory ByVal lParam, udtMINMAXINFO, 40& 
     WindowProc = False 
     Exit Function 
     End Select 
     WindowProc = CallWindowProc(procOld, hWnd, iMsg, wParam, lParam) 
    End Function 
     
    Public Function LockWindow(hWnd As Long, Optional MinWidth As Long, Optional MinHeight As Long, Optional MaxWidth As Long, Optional MaxHeight As Long) As Boolean 
     With udtMMI 
     '指 定 窗 体 最 小 宽 度 
     If MinWidth = 0 Then .ptMinTrackSize.x = 0 Else .ptMinTrackSize.x = MinWidth 
     '指 定 窗 体 最 小 高 度 
     If MinHeight = 0 Then .ptMinTrackSize.y = 0 Else .ptMinTrackSize.y = MinHeight 
     '指 定 窗 体 最 大 宽 度 
     If MaxWidth = 0 Then .ptMaxSize.x = Screen.Width \ Screen.TwipsPerPixelX Else .ptMaxSize.x = MaxWidth 
     '指 定 窗 体 最 大 高 度 
     If MaxHeight = 0 Then .ptMaxSize.y = Screen.Width \ Screen.TwipsPerPixelX Else .ptMaxSize.y = MaxHeight 
     End With 
     procOld = SetWindowLong(hWnd, -4, AddressOf WindowProc) 
    End Function 
<END> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -