强制模态窗体显示在任务栏中

Mat*_*lko 7 vb6 taskbar user-experience modal-dialog vb6-migration

根据MS,当您在VB6中显示模态窗体时,它不会在任务栏中显示"设计"

但有没有办法让VB6模态窗体显示在任务栏中(ShowInTaskbar属性在模态时没有效果)

在我们的一个应用程序中,我们有一个模式登录表单,它是在启动屏幕卸载后在应用程序中显示的第一个表单,因此如果用户在顶部移动另一个窗口,则您不知道它已加载.

wqw*_*wqw 7

你可以在模态形式中使用这样的东西

Private Const WS_EX_APPWINDOW               As Long = &H40000
Private Const GWL_EXSTYLE                   As Long = (-20)
Private Const SW_HIDE                       As Long = 0
Private Const SW_SHOW                       As Long = 5

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private m_bActivated As Boolean

Private Sub Form_Activate()
    If Not m_bActivated Then
        m_bActivated = True
        Call SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_APPWINDOW)
        Call ShowWindow(hwnd, SW_HIDE)
        Call ShowWindow(hwnd, SW_SHOW)
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)


小智 5

将此代码放入模态窗口中:


    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

    Private Sub Form_Activate()
        Call ShowWindow(Me.hWnd, vbHide)
        Me.Caption = Me.Caption
        Call ShowWindow(Me.hWnd, vbNormalFocus)
    End Sub

Run Code Online (Sandbox Code Playgroud)