vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Fensterlayout in IDE/Exe und Windows10/XP-Kompatibilitätsmode unterschiedlich 
Autor: HarryLobster
Datum: 03.03.18 18:52

Bisschen schwierig das ohne Screenshots genau zu erklären...

Ich möchte über eine einschlägig bekannte API-Funktion (SetWindowLong) gerne die Titelleiste meines Formulars ausblenden. Das klappt auch in der IDE, alles prima. Nach der Kompilierung habe ich aber am oberen Rand zum eigentlichen Beginn des Darstellungsbereichs nun eine ca. 2mm hohe Lücke/Rand und auch sonst sind alle Mauskoordinaten um diese Lücke verschoben. Führe ich die Exe im XP-Kompatibilitätsmodus aus, ist auch alles so, wie gewünscht. Wenn ich ehrlich bin, habe ich wenig Hoffnung, dass mir hier jemand zu dem Thema helfen kann, aber diese stirbt ja bekanntlich zuletzt...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fensterlayout in IDE/Exe und Windows10/XP-Kompatibilitätsmode unterschiedlich 
Autor: Souffleurlos
Datum: 04.03.18 18:18

Hallo,

dazu braucht man keine WinAPI-Funktion. Das geht mit den Standard VB - Forms-Eigenschaften.

BorderStyle: none
ControlBox false
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fensterlayout in IDE/Exe und Windows10/XP-Kompatibilitätsmode unterschiedlich 
Autor: HarryLobster
Datum: 04.03.18 21:32

Dann kann man es aber nicht mehr in der Größe verändern oder verschieben. Nicht hilfreich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fensterlayout in IDE/Exe und Windows10/XP-Kompatibilitätsmode unterschiedlich 
Autor: Kuno60
Datum: 04.03.18 23:48

Hallo,
verschieben geht bei einem Formular mit "BorderStyle = 0 - Kein" trotzdem, mit MouseMove und SendMessage.
' Linke Maustaste wurde im Nicht-Clientbereich der Form betätigt
Private Const WM_NCLBUTTONDOWN As Long = &HA1&
' Die Position im Nicht-Clientbereich ist die Titelleiste.
Private Const HTCAPTION As Long = 2&
 
Private Declare Sub ReleaseCapture Lib "User32" ()
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal _
  hWnd As Long, ByVal Message As Long, ByVal wParam As Long, ByRef lParam As _
  Any) As Long
 
'Verschieben der Form mit dem Mauszeiger
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y _
  As Single)
  If Button = vbLeftButton Then
    Call ReleaseCapture
    Call SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&)
  End If
End Sub
Das geht auch ohne SendMessage, wenn man die Mauskoordinaten in Bildschirmkoordinaten umrechnet.
Das ändern der Größe ist auch nur per Code möglich, aber machbar.

Mit der API: SetWindowRgn, kann man dem Formular auch eine beliebige andere Form verpassen (Rund, Stern usw.).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fensterlayout in IDE/Exe und Windows10/XP-Kompatibilitätsmode unterschiedlich 
Autor: HarryLobster
Datum: 05.03.18 08:58

Hallo,

danke für den Hinweis. Ich muss aber das Formular weiterhin mit der Maus in der Größe verändern können und zwar so, wie gewohnt, also u.a. an den Rändern ziehen. Daher ist für mich die einzig sinnvolle Lösung das mit dem Rahmen=Änderbar und der Ausblendung der Titelleiste. Mein Problem muss irgendwie mit dem "Aero"-Feature ab Windows7 zu tun habe, das habe ich für meine IDE auch deaktiviert, daher klappt es in der IDE und im XP-Modus.

Kann man alternativ zumindest nur das Icon ausblenden, dazu finde ich keinen API-Aufruf ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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