Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 强制在任务栏中显示模式窗体_Vb6_Modal Dialog_User Experience_Taskbar_Vb6 Migration - Fatal编程技术网

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

Vb6 强制在任务栏中显示模式窗体,vb6,modal-dialog,user-experience,taskbar,vb6-migration,Vb6,Modal Dialog,User Experience,Taskbar,Vb6 Migration,在VB6中显示模式窗体时,它不会显示在“按设计”的任务栏中 但是,有没有办法使VB6模式窗体显示在任务栏中(ShowInTaskbar属性为模式时无效) 在我们的一个应用程序中,我们有一个模式登录表单,它是启动屏幕卸载后应用程序中显示的第一个表单,因此,如果用户将另一个窗口移到顶部,您就不知道它已加载。您必须进行子类化,类似于从VBAccelerator 免责声明-根据PM2的答案改编,该答案可能是重复的,但我们无法确定,因为原始海报从未告诉我们其形式是否为模态形式。您可以在模态形式中使用类似的

在VB6中显示模式窗体时,它不会显示在“按设计”的任务栏中

但是,有没有办法使VB6模式窗体显示在任务栏中(ShowInTaskbar属性为模式时无效)


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

您必须进行子类化,类似于从VBAccelerator


免责声明-根据PM2的答案改编,该答案可能是重复的,但我们无法确定,因为原始海报从未告诉我们其形式是否为模态形式。

您可以在模态形式中使用类似的内容

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

将此代码放在模式窗口中:


    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


感谢@Jeff修复链接!这对我来说很有效,比子类化容易得多。有人能解释一下
Me.Caption=Me.Caption
的用途吗?据我所知,它会导致Windows更新窗口的某些属性,以便在您再次显示窗口时重新计算该窗口是否应显示在任务栏中。通过在ShowWindow中使用vbNormalFocus标志,只要您“更改”了窗口的某些属性,windows就会将其视为第一次显示窗口。