ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 06.09.2000

Diese Seite wurde zuletzt aktualisiert am 06.09.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Form nachträglich in Taskbar

Zurück...


Anzeige

(-hg) mailto:hg_formintaskbar@aboutvb.de

Leider ist die Eigenschaft MSDN Library - VB ShowInTaskbarShowInTaskbar eines Forms zur Laufzeit schreibgeschützt. Sie müssten sich also bereits beim Entwurf des Forms endgültig dafür entscheiden, ob es in der Taskbar erscheinen soll oder nicht. Eigentlich? Richtig. Wie so oft bietet nämlich das API einen Ausweg.

Ob ein Form in der Taskbar erscheint, hängt davon ab, ob der Fenster-Stil WS_EX_APPWINDOW gesetzt ist. Die Stil-Einstellungen können Sie mit der API-Funktion MSDN Library - API GetWindowLongGetWindowLong auslesen und den Stil nachträglich mit der API-Funktion MSDN Library - API SetWindowLongSetWindowLong setzen oder löschen. Wirksam wird das Setzen des Stils allerdings nur, wenn das Form nicht sichtbar ist. Es muss also, zumindest kurzzeitig, unsichtbar und nach der Änderung wieder sichtbar gemacht werden. Falls Sie das Flackern beim Verbergen und wieder Anzeigen des Forms stören sollte, können Sie mit der API-Funktion MSDN Library - API LockWindowUpdateLockWindowUpdate die Bildschirmaktualisierung unterbinden. Da aber danach der gesamte Bildschirm wieder aufgefrischt wird, kann es sein, dass nun andere gleichzeitig sichtbare Programme, die ihren Darstellungsbereich vor dem Neuzeichnen löschen, diesen langwierig wieder aufzubauen beginnen.

Die Prozedur FormInTaskbar erledigt das Setzen des Taskbar-Stils in einem Aufruf. Sie übergeben ihr im ersten Parameter das betreffende Form und im zweiten Parameter die Angabe über die Sichtbarkeit des Forms in der Taskbar. Setzen Sie den weiteren optionalen Parameter NoFlicker auf True, wird die Bildschirmaktualisierung (wie oben beschrieben) unterbunden.

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowLong Lib "user32" _
 Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) _
 As Long
Private Declare Function LockWindowUpdate Lib "user32" _
 (ByVal hwndLock 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

Public Sub FormInTaskbar(Form As Form, _
 ByVal ShowInTaskBar As Boolean, Optional ByVal NoFlicker As Boolean)

  Dim nStyle As Long
  Dim nVisible As Boolean
  
  Const GWL_EXSTYLE = (-20)
  Const WS_EX_APPWINDOW = &H40000
  
  With Form
    nVisible = .Visible
    If NoFlicker And nVisible Then
      LockWindowUpdate GetDesktopWindow()
    End If
    .Visible = False
    nStyle = GetWindowLong(.hwnd, GWL_EXSTYLE)
    Select Case ShowInTaskBar
      Case True
        nStyle = nStyle Or WS_EX_APPWINDOW
      Case False
        nStyle = nStyle And Not WS_EX_APPWINDOW
    End Select
    SetWindowLong .hwnd, GWL_EXSTYLE, nStyle
    .Refresh
    .Visible = nVisible
    If NoFlicker And nVisible Then
      LockWindowUpdate 0&
    End If
  End With
End Sub

Modul modFormInTaskbar (modFormInTaskbar.bas - ca. 1,5 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer