(问) 怎样用代码隐藏、最大化、最小化ACCESS的主窗口?
(答) 通过一函数已定义的常量fSetAccessWindow实现。
该函数能用来完全隐藏Access窗口并将你自己的窗体显示在桌面上。在弹出式窗体的Open事件中使用SW_HIDE参数调用fSetAccessWindow函数实现。
注意:如果你隐藏了Access主窗口,要确定你有良好的出错处理。因为主窗口隐藏后,一旦引发错误,并出错提示窗口上点击了“结束”按钮,这样不会使Access主窗口可见,并退出你自己的窗体。推荐你在你的错误处理程序中使用SW_SHOWNORMAL参数调用fSetAccessWindow函数来显示Access主窗口。
如果由于别的原因,Access主窗口不能显示,那么你将只能从任务栏中关闭你的mdb,在Win9x中使用Control-Alt-Delete来结束任务,在WinNT、2000或XP中,可以右键单击任务栏选择任务管理器来选择该mdb结束任务。
'************代码开始**********
GlobalConstSW_HIDE=0
GlobalConstSW_SHOWNORMAL=1
GlobalConstSW_SHOWMINIMIZED=2
GlobalConstSW_SHOWMAXIMIZED=3 PrivateDeclareFunctionapiShowWindowLib"user32"_
Alias"ShowWindow"(ByValhwndAsLong,_
ByValnCmdShowAsLong)AsLong
FunctionfSetAccessWindow(nCmdShowAsLong)
'使用举例
'最大化Access窗口
' ?fSetAccessWindow(SW_SHOWMAXIMIZED)
'最小化Access窗口
' ?fSetAccessWindow(SW_SHOWMINIMIZED)
'隐藏Access窗口
' ?fSetAccessWindow(SW_HIDE)
'正常显示Access窗口
' ?fSetAccessWindow(SW_SHOWNORMAL)
'
DimloX AsLong
DimloFORMAsFORM
OnErrorResumeNext
SetloFORM=Screen.ActiveFORM
IfErr<>0Then'没有活动窗体noActiveFORM
IfnCmdShow=SW_HIDEThen
MsgBox"除非屏幕上有一个窗口,否则不能隐藏Access主窗口!"_
&vbcr&vbcr _
&"CannothideAccessunless"_
&"aFORMisonscreen"
Else
loX=apiShowWindow(hWndAccessApp,nCmdShow)
Err.Clear
EndIf
Else
IfnCmdShow=SW_SHOWMINIMIZEDAndloFORM.Modal=TrueThen
MsgBox"不能由屏幕上的"&(loFORM.Caption+"") &"窗体最小化Access主窗口!"_
&vbcr&vbcr _
&"CannotminimizeAccesswith"_
&(loFORM.Caption+"")_
&"FORMonscreen"
ElseIfnCmdShow=SW_HIDEAndloFORM.PopUp<>TrueThen
MsgBox"不能由屏幕上的"&(loFORM.Caption+"") &"窗体隐藏Access主窗口!"_
&vbcr&vbcr _
&"CannothideAccesswith"_
&(loFORM.Caption+"")_
&"FORMonscreen"
Else
loX=apiShowWindow(hWndAccessApp,nCmdShow)
EndIf
EndIf
fSetAccessWindow=(loX<>0)
EndFunction
'************代码结束**********