| |
VB & Windows APIEigenschaften der Windows-Taskleiste | | | Autor: alluju | Datum: 09.09.05 09:29 |
| Hallo!
Ich habe hier den Code für das Ermitteln der Taskleisteneigenschaften gefunden und hab das auch gleich ausprobiert. Funktioniert super.
Wenn ich das allerdings erweitere, dann funktioniert es nicht mehr so super.
Folgendes Problem:
Ich habe ein VB-Formular, dass so groß ist wie die Auflösung des Bildschirms. Damit die taskleiste aber nicht das Formular überdeckt soll das Formular je nachdem wo sich die Taskleiste befindet und wie groß sie ist angepasst werden. Also habe ich noch folgendes hinzugefügt:
Private Declare Function GetDC Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
(ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Const HORZRES = 8
Private Const VERTRES = 10
Public Property Get ScreenBreite() As Long
Dim BnDC As Long
BnDC = GetDC(0)
ScreenBreite = GetDeviceCaps(BnDC, HORZRES)
ReleaseDC 0, BnDC
End Property
Public Property Get ScreenHoehe() As Long
Dim HnDC As Long
HnDC = GetDC(0)
ScreenHoehe = GetDeviceCaps(HnDC, VERTRES)
ReleaseDC 0, HnDC
End Property Damit ermittle ich die Auflösung. Um das ganze dann zu nutzen, wende ich das alles bei Form_Load an:
Private Sub Form_Load()
Form1.height = ScreenHoehe * 20
Form1.width = ScreenBreite * 20
Form1.top = 0
Form1.left = 0
Dim tbPosition As Byte
Dim tbHoehe As Integer
Dim tbBreite As Integer
Dim tbVordergrund As String
tbPosition = TaskBarAlign
tbHoehe = TaskBarHeight * 20
tbBreite = TaskBarWidth * 20
tbVordergrund = IsTaskBarOnTop
Select Case TaskBarAlign
Case 0 'links
Form1.width = Form1.width - tbBreite 'ungültiger eigenschaftswert
Form1.left = Form1.left + tbBreite
Case 1 'rechts
Form1.width = Form1.width - tbBreite 'ungültiger eigenschaftswert
Case 2 'oben
Form1.height = Form1.height - tbHoehe
Form1.top = Form1.top + tbHoehe
Case 3 'unten
Form1.height = Form1.height - tbHoehe
Case Else
MsgBox ("fehler")
End Select
End Sub ScreenHoehe, ScreenBreite, TaskBarheight und TaskBarWidth rechne ich * 20, weil das ganze in Twips angezeigt werden soll und nicht in Pixel (1 Pixel = 20 Twips)
Mein Problem:
Die Höhe und breite der Taskleiste wird richtig ermittelt, ebenfalls die Auflösung. Ist die Taskleiste unten wird korrekt von der Höhe des Formulars die Höhe der Taskleiste abgezogen und auch richtig dargestellt. Ist die Taskleiste aber an den anderen Seiten, wird zwar ebenfalls korrekt gerechnet, allerdings nicht richtig angezeigt. Zwischen Taskleiste und Formular ist immer noch etwas Platz, es scheint also, als ob zu viel vom Formular abgezogen wurde. Was allerdings nicht sein kann, da richtig gerechnet wurde.
Woran könnte das liegen? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|