设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 8564|回复: 26
打印 上一主题 下一主题

API改变窗体的弹出窗体模式

[复制链接]
跳转到指定楼层
1#
发表于 2008-3-4 21:02:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
'===========================================================

'用途:动态改变窗体的弹出模式
'作者: andymark
'日期:2008-3-4
' Q Q: 42503577  Email: ewang11@163.com
'
'==========================================================

    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 Const SWP_NOSIZE = &H1
    Private Const SWP_NOZORDER = &H4
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_DRAWFRAME = &H20
    Private Const GWL_STYLE = (-16)
    Private Const WS_POPUP = &H80000000     '弹出模式
    Private Const HWND_TOPMOST = -1         '最顶层窗口

Public Function SetPoPupFrm(Frm As Form, SetPOPUP As Boolean)

    Dim dwStyle As Long
   
    dwStyle = GetWindowLong(Frm.hwnd, GWL_STYLE)
   
    If SetPOPUP Then
   
        dwStyle = dwStyle Or WS_POPUP
        dwStyle = SetWindowLong(Frm.hwnd, GWL_STYLE, dwStyle)
        SetWindowPos Frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
        
    Else
      
       dwStyle = SetWindowLong(Frm.hwnd, GWL_STYLE, dwStyle)
       SetWindowPos Frm.hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

        
    End If
End Function

'Private Sub Form_Load()
'设置窗体弹出模式
' SetPoPupFrm Me, True
'非出模式
' SetPoPupFrm Me, False

'End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
27#
发表于 2018-1-15 21:27:01 | 只看该作者
很好的列子
26#
发表于 2012-10-7 11:13:45 | 只看该作者
25#
发表于 2012-9-14 21:26:18 | 只看该作者
今天偶然路过这里,发现这个贴子,跟 我昨天在下面链接分析的问题很接近。
既然发现了错误就指出来罗

由于是管理员级发布的代码,新手自然认为是比较权威的,但 WS_POPUP   和 WS_CHILD(WINDOW)两种是不能共容的,
就像现实中的男人与女人,虽然都是人,但是不能转换来转换去,虽然现实中可以男人变性为女人,但是要付出代价的,虽然贴了女人标,但始终是男人。

同理,代码中虽然可以将普通窗体标上 WS_POPUP  标签,但你始终是男人,所以运行起来问题就多多了(你说变性男/人妖,到底上男厕所还是女厕所,现实如此,系统也如此{:soso_e144:} )


文采就这样,能让大家能深入一点理解就好。

http://www.office-cn.net/thread-114430-2-1.html
24#
发表于 2012-8-11 18:34:18 | 只看该作者
23#
发表于 2012-4-3 14:41:05 | 只看该作者
学习学习。
22#
发表于 2012-4-3 13:55:23 | 只看该作者
学习一下
21#
发表于 2012-4-3 15:00:14 | 只看该作者
okokokokokooookokokok
20#
发表于 2011-6-28 16:39:54 | 只看该作者
谢谢看,谢管理员。
19#
发表于 2010-1-3 22:23:08 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-7 20:16 , Processed in 0.095895 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表