代码设置窗体的弹出模式

曾经有人问过这个问题,怎样用代码设置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

http://www.office-cn.net/vvb/thread-60059-1-1.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值