操作方法

操作方法:强制 Visual Basic 表单停留在 ArcMap 或 ArcCatalog 的顶部

Last Published: January 19, 2021

摘要

注: 本文仅适用于 ArcGIS 8.x 版本。 更高版本的 ArcGIS 可能包含不同的功能,对于菜单、命令和地理处理工具,可能具有不同的名称和位置。
注: ArcGIS 10.5 及更高版本不包含 Microsoft VBA 兼容性设置。

创建 ActiveX DLL 的用户有时需要加载 Visual Basic 表单作为应用程序的一部分。 首次显示时,该表单将显示在主应用程序的前面。 然后,当用户与 ArcMap 或 ArcCatalog 的 GUI 进行交互时,会默认将 Visual Basic 表单重新放置在 ArcMap 或 ArcCatalog 的后面。

过程

请执行以下步骤以确保 Visual Basic 表单始终停留在主应用程序的顶部。

通过直接调用 SetWindowPos 进行更多自定义。 有关 SetWindowPos 的详细信息,请访问 Microsoft MSDN

  1. 在 Visual Basic ActiveX DLL 工程中,添加一个新的标准模块并将以下代码复制到该模块中。
代码: Option Explicit ' WINDOW POSITIONING 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 ' SetWindowPos Flags Public Const SWP_NOSIZE = &H1 Public Const SWP_NOMOVE = &H2 Public Const SWP_NOZORDER = &H4 Public Const SWP_NOREDRAW = &H8 Public Const SWP_NOACTIVATE = &H10 Public Const SWP_FRAMECHANGED = &H20 Public Const SWP_SHOWWINDOW = &H40 Public Const SWP_HIDEWINDOW = &H80 Public Const SWP_NOCOPYBITS = &H100 Public Const SWP_NOOWNERZORDER = &H200 Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER Public Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE Public Const HWND_TOP = 0 Public Const HWND_BOTTOM = 1 Public Const HWND_TOPMOST = -1 Public Const HWND_NOTOPMOST = -2 Public Sub SetWin_NOTOPMOST(hWnd As Long) SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS End Sub Public Sub SetWin_TOPMOST(hWnd As Long) SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS End Sub (
  1. 在 Form_Load 中添加:
SetWin_TOPMOST Me.hWnd

文章 ID:000004399

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容