阅读:1520回复:1
写dll几乎都要用的两个api函数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 |
|
|