曾经有人问过这个问题,怎样用代码设置ACCESS的PopUp 属性。而PopUp 属性只能在设计模式更改,所以很难用一般常规方法实现。
'===========================================================
'用途:代码设置窗体的弹出模式
'作者: andymark
'日期:2008-3-4
' Q Q: 42503577 Email: ewang11@163.com
'
'==========================================================
Private Declare Function AdjustWindowRect Lib "user32" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long
Private Declare Function BeginDeferWindowPos Lib "user32" (ByVal nNumWindows As Long) As Long
Private Declare Function DeferWindowPos Lib "user32" (ByVal hWinPosInfo As Long, ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function EndDeferWindowPos Lib "user32" (ByVal hWinPosInfo As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
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 Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
Const SWP_NOMOVE = &H2
Const SWP_DRAWFRAME = &H20
Const GWL_STYLE = (-16)
Const WS_POPUP = &H80000000 '弹出模式
Const HWND_TOPMOST = -1 '最顶层窗口
Const HWND_BOTTOM = 1
Const SWP_SHOWWINDOW = &H40
Const HWND_NOTOPMOST = -2
Const WS_BORDER = &H800000
Const WS_DLGFRAME = &H400000
Const WS_THICKFRAME = &H40000
Const WS_CAPTION = &HC00000
Const HWND_TOP = 0
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function SetPoPupFrm(Frm As Form)
Dim dwStyle As Long
Dim BStyle As Long
Dim R As RECT, hDWP As Long
'取得当前式样
dwStyle = GetWindowLong(Frm.hWnd, GWL_STYLE)
'保存式样,以便还原
BStyle = dwStyle
'定义弹出模式
dwStyle = dwStyle or WS_POPUP
dwStyle = SetWindowLong(Frm.hWnd, GWL_STYLE, dwStyle)
'窗口的尺寸
GetWindowRect Frm.hWnd, R
'还原窗口样式
dwStyle = SetWindowLong(Frm.hWnd, GWL_STYLE, BStyle)
'重新指定窗口 位置及状态等属性
AdjustWindowRect R, WS_THICKFRAME or WS_CAPTION, False
hDWP = BeginDeferWindowPos(1)
DeferWindowPos hDWP, Frm.hWnd, HWND_TOPMOST, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, SWP_NOSIZE
EndDeferWindowPos hDWP
End Function
Private Sub Form_Load()
'设置窗体弹出模式
SetPoPupFrm Me
End Sub