我一直在尝试让 Microsoft Access 从主 Access 窗口中“退出”,这样我就可以隐藏 Access 窗口并仅在桌面上显示表单,以便可以轻松地将其放置在其他应用程序旁边。
起初我发现了一些使用 Access 自己的 Form.PopUp 属性的代码示例,但这不能在运行时设置,只能在设计视图中设置。尽管这似乎实现了我想要做的事情,但有两个缺点:
在设计视图和普通视图之间切换需要“关闭”两者之间的窗口 - 我宁愿保持打开状态以保留当前状态,特别是因为它用于创建必须未保存的新记录。
我想从主表单打开其他表单,除非它们也被设置为“弹出”,否则这些表单似乎也不适用于这种方法。但这很麻烦,因为这些也需要放入设计视图等,我不确定在两个弹出窗口之间切换是否容易。
然后我找到了一个名为 SetParent 的 API 函数,它似乎可以满足我的需要。我使用了以下命令(VBA 语法):
SetParent ShowForm.hWnd
ShowWindow hWndAccessApp, SW_HIDE
ShowWindow ShowForm.hWnd, SW_SHOWNORMAL
但我遇到了两个问题(可能相关:
该窗口似乎反应迟钝(例如,我无法输入它,并且单击按钮似乎也不起作用)。
当我执行 ALT+TAB 时,我得到了一个 BSOD:
BugCheck 1000008E, {c0000005, 9e3573f5, 88d9da10, 0} Probably caused by : win32k.sys ( win32k!xxxNextWindow+3a6 ) at win32k!EngLineTo+1a641
有没有其他方法可以做到这一点,以便我可以拥有一个没有访问窗口的表单,该访问窗口能够在主访问窗口之外调用和显示其他访问表单?
我在SetParent API 文档中注意到还有一些其他事情需要完成 - 更改 UI 状态和更改窗口样式,但我找不到正确的方法来完成它们。这样做会解决 BSOD 和无响应问题吗?
感谢您的任何想法!