gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1521回复:1

写dll几乎都要用的两个api函数

楼主#
更多 发布于:2003-10-22 10:35

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Public Const GWL_HWNDPARENT = (-8)

为了放置用模态窗体导致自定义窗体出现后,arcmap本身不可用,所以用第一个函数来使自定义窗体置前。当自定义窗体被关闭后,如果在窗体的unload事件中不使用第二个函数,那么很有可能arcmap不是置定窗体,这样用第二个函数可以将arcmap置顶

例子

类模块中
Private Sub ICommand_OnClick()
  Dim newForm As New frmMain
  newForm.Application = m_pApp
  
  SetWindowLong newForm.hwnd, -8, m_pApp.hwnd
  newForm.Show vbModeless
End Sub

窗体的unload事件中
Private Sub Form_Unload(Cancel As Integer)
  SetForegroundWindow m_pApp.hwnd  '这个是arcmap的句柄
End Sub
喜欢0 评分0
GIS麦田守望者,期待与您交流。
游客

返回顶部