将互操作表单保留在 VB6 应用程序顶部

问题描述 投票:0回答:2

我使用的是 InteropFormsToolkit 2.1 版。我试图确保当 .NET 表单从 VB6 表单上引发的事件加载时,.NET 表单可以保持在顶部。我已经尝试了很多事情但无法让任何事情发挥作用。我已经尝试了一切,从 z-index 到向 User32.dll 添加托管调用以将其推到最前面,等等。

任何想法都值得赞赏。

vb.net winforms vb6 interop winforms-interop
2个回答
1
投票

在 vb6 中你可以使用:

Private Sub Form_Load()
OnTopMe Me, True
End Sub

以及模块中的以下代码

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


Public Sub OnTopMe(FormID As Object, onTop As Boolean)
     If onTop = True Then SetWindowPos FormID.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
     If onTop = False Then SetWindowPos FormID.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

我不知道如何在.Net中做到这一点


0
投票

尝试这个旧例程并收到 HWND_TOPMOST 未定义的错误。您的示例中是否缺少变量定义?

© www.soinside.com 2019 - 2024. All rights reserved.