module1.bas

来自「很好的教程原代码!」· BAS 代码 · 共 57 行

BAS
57
字号
Attribute VB_Name = "Module1"
Option Explicit

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
   (ByVal hwnd As Long, _
   ByVal nIndex As Long, _
   ByVal dwNewLong As Long) As Long

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
   (ByVal hwnd As Long, _
   ByVal nIndex As Long) As Long

Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
   (ByVal lpPrevWndFunc As Long, _
   ByVal hwnd As Long, _
   ByVal Msg As Long, _
   ByVal wParam As Long, _
   ByVal lParam As Long) As Long

Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _
    lpvDest As Any, _
    lpvSource As Any, _
    ByVal cbCopy As Long)

Public Const GWL_WNDPROC = (-4)
Public Const WM_WINDOWPOSCHANGING = &H46

Type WINDOWPOS
        hwnd As Long
        hWndInsertAfter As Long
        x As Long
        y As Long
        cx As Long
        cy As Long
        flags As Long
End Type

Public preWinProc As Long

Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
                          ByVal wParam As Long, _
                          ByVal lParam As Long) As Long
  Dim lwd As Long, hwd As Long
  If Msg = WM_WINDOWPOSCHANGING Then
     Dim WPOS As WINDOWPOS
     CopyMemory WPOS, ByVal lParam, Len(WPOS)
     If WPOS.x < 0 Then
        WPOS.x = 0
        CopyMemory ByVal lParam, WPOS, Len(WPOS)
     End If
  End If
  '将之送往原来的Window Procedure
  wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function


⌨️ 快捷键说明

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