设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

API: 管理 Access 窗口 (朱亦文译)

2002-6-17 08:39| 发布者: admin| 查看: 1118| 评论: 11|原作者: zhuyiwen|来自: www.office-cn.net

摘要: -------------------------------------------------------------------------------- API: 管理 Access 窗口 -------------------------------------------------------------------------------- (问) 怎样 ...

--------------------------------------------------------------------------------
API: 管理 Access 窗口
--------------------------------------------------------------------------------

通过一函数已定义的常量 fSetAccessWindow 实现最大化、最小化 ACCESS 的主窗口

该函数能用来完全隐藏 Access 窗口并将你自己的窗体显示在桌面上。在弹出式窗体的 Open 事件中使用 SW_HIDE 参数调用 fSetAccessWindow 函数实现。

注意:如果你隐藏了 Access 主窗口,要确定你有良好的出错处理。因为主窗口隐藏后,一旦引发错误,并出错提示窗口上点击了“结束”按钮,这样不会使 Access 主窗口可见,并退出你自己的窗体。推荐你在你的错误处理程序中使用 SW_SHOWNORMAL 参数调用 fSetAccessWindow 函数来显示 Access 主窗口。
如果由于别的原因,Access 主窗口不能显示,那么你将只能从任务栏中关闭你的 mdb,在 Win 9x 中使用 Control-Alt-Delete 来结束任务,在 Win NT 、2000 或 XP 中,可以右键单击任务栏选择任务管理器来选择该 mdb 结束任务。


'************ 代码开始 **********
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3


Private Declare Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hwnd As Long, _
          ByVal nCmdShow As Long) As Long

Function fSetAccessWindow(nCmdShow As Long)
' 使用举例
' 最大化 Access 窗口
'       ?fSetAccessWindow(SW_SHOWMAXIMIZED)
' 最小化 Access 窗口
'       ?fSetAccessWindow(SW_SHOWMINIMIZED)
' 隐藏 Access 窗口
'       ?fSetAccessWindow(SW_HIDE)
' 正常显示 Access 窗口
'       ?fSetAccessWindow(SW_SHOWNORMAL)
'
Dim loX  As Long
Dim loForm As Form
    On Error Resume Next
    Set loForm = Screen.ActiveForm
    If Err <> 0 Then                         ' 没有活动窗体 no Activeform
      If nCmdShow = SW_HIDE Then
        MsgBox "除非屏幕上有一个窗口,否则不能隐藏 Access 主窗口!" _
                    & vbcr & vbcr  _
                    & "Cannot hide Access unless " _
                    & "a form is on screen"
      Else
        loX = apiShowWindow(hWndAccessApp, nCmdShow)
        Err.Clear
      End If
    Else
        If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
            MsgBox "不能由屏幕上的 " & (loForm.Caption + " ")  & "窗体最小化 Access 主窗口!" _
                    & vbcr & vbcr  _
                    & "Cannot minimize Access with " _
                    & (loForm.Caption + " ") _
                    & "form on screen"
        ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
            MsgBox "不能由屏幕上的 " & (loForm.Caption + " ")  & "窗体隐藏 Access 主窗口!" _
                    & vbcr & vbcr  _
                    & "Cannot hide Access with " _
                    & (loForm.Caption + " ") _
                    & "form on screen"
        Else
            loX = apiShowWindow(hWndAccessApp, nCmdShow)
        End If
    End If
    fSetAccessWindow = (loX <> 0)
End Function

'************ 代码结束 **********

未经许可,请勿转载


发表评论

最新评论

引用 ganrong 2002-6-17 09:31
very good
引用 huanghai 2002-6-17 16:26
好,又为我们作贡献了!
引用 yuab 2002-6-24 19:32
太好了
看来这个动作又为我们开发的软件向更专业化迈进了一步了。
引用 sunredday 2002-6-24 20:25
好好好
引用 dca 2002-6-24 21:21
此函数有时会出现系统菜单丢失的问题!!!
引用 binbow_z 2002-6-25 01:25
在ACCESS启动参数中可以做到,我一般不用API,出了问题不知道如何搞
引用 yuab 2002-7-8 21:02
这个都搞出来了,能不能再接再励将Access的启动画面也搞掉呢?
引用 zyj_1978 2002-9-17 22:19
binbow_z:
在ACCESS启动参数中怎么搞???
能告诉我吗?谢谢!
我的邮箱:zyj_1978@hotmail.com
引用 zyj_1978 2002-9-20 02:08
请高手指点一下!!!
我用了朱版主的代码,非常好!但有一个问题:按下窗体中的报表预览按钮,怎么也打不开报表了,直接打印还可以。真不知该怎么办。!
还望各位指点一下,谢了!

引用 HG 2002-9-20 02:58
以下是引用binbow_z在2002-6-24 17:24:38的发言:
在ACCESS启动参数中可以做到,我一般不用API,出了问题不知道如何搞

說真的出了問題,就難搞定了,我現在很多東西都不會用
比如:API接口,OCX控件,等等 一系列的增強功能。
引用 WTM1 2002-9-24 01:35
她做的太绝了!!
该代码不知道被那位大虾改造!!是的access几乎全部有效菜单全部失效!!
建议使用时不要更改!!

查看全部评论(11)

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

GMT+8, 2024-5-3 13:12 , Processed in 0.088179 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部