2012-01-05 24 views
6

According to MS khi bạn hiển thị một dạng phương thức trong VB6 nó không hiển thị trong thanh tác vụ bằng cách thiết kế 'Force phương thức biểu mẫu cho phép được hiển thị trong Taskbar

Nhưng có cách nào để thực hiện một hình thức VB6 phương thức được hiển thị trong thanh tác vụ (thuộc tính ShowInTaskbar không có hiệu lực khi nó là phương thức)

Trong một trong các ứng dụng của chúng tôi, chúng tôi có biểu mẫu đăng nhập phương thức đầu tiên được hiển thị trong ứng dụng sau khi màn hình giật giật tải xuống để người dùng di chuyển một cửa sổ khác trên đầu bạn không biết nó được tải.

Trả lời

6

Bạn có thể sử dụng một cái gì đó như thế này trong các hình thức modal

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 
+0

giải pháp đơn giản tuyệt vời cảm ơn bạn –

1

Bạn sẽ phải thực hiện phân lớp phụ, chẳng hạn như this từ VBAccelerator.

Disclaimer - chuyển thể từ câu trả lời PM2 để this question đó là lẽ một bản sao, nhưng chúng tôi không thể nói vì các poster ban đầu không bao giờ nói với chúng tôi cho dù hình thức của họ là phương thức.

+0

Cảm ơn @ Jeff để sửa chữa các liên kết! – MarkJ

3

Đặt mã này trong cửa sổ modal của bạn:


    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 

+0

Điều này làm việc cho tôi và dễ dàng hơn nhiều so với phân lớp phụ. Ai đó có thể giải thích 'Me.Caption = Me.Caption' là gì? –

+0

Theo như tôi có thể nói nó làm cho Windows cập nhật một số thuộc tính của cửa sổ để nó đánh giá lại xem cửa sổ có xuất hiện trên thanh tác vụ hay không khi bạn hiển thị lại nó. Bằng cách sử dụng cờ vbNormalFocus với ShowWindow, các cửa sổ sẽ xử lý nó như thể đây là lần đầu tiên cửa sổ được hiển thị miễn là bạn đã "thay đổi" một số thuộc tính của cửa sổ. – cjc

Các vấn đề liên quan