Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:53

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Windows XP Style
BeitragVerfasst: Di Feb 01, 2005 22:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
OK:
Ich würde gerne die Darstellung meines Programms unabhängig von den Widows-Anzeige Optionen machen!
Wenn jemand zum Beispiel mit XP-Darstellung mein unter klassischer Darstellung programmiertes Programm benutzt, so wird der Rahmen der Fenster Größer, und der Inhalt kann nicht mehr optimal dargestellt werden (Es erscheinen Bildlaufleisten an den Fensterrändern).
Kann ich eine Klassisch-Windows-Darstellung erzwingen???

Ps. Mit Autosize möchte ich das ungern lösen

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 02, 2005 13:13 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Ja das geht schon, und ich zeige dir die Möglichkeit die ich kenne und die ist a biss. kompliziert ( kompliziert = eine Ansichtssache ). So, du könntest die Standard-Implementation von WM_xx Nachrichten überschreiben und dann bist du sicher dass das Program unabhängig von Win-XP Style ausgeführt wird.
Zitat:
1. Responding to WM_NCxxxx Messages
The WM_NCxxxx messages refer to the non-client area of the window. This area includes the title bar, close button, minimize & maximize buttons, and window border. We will need to respond to the following messages:

WM_NCCREATE - Modify window style & store caption size.
WM_NCCALCSIZE - Return adjusted size of window client area.
WM_NCHITTEST - Determine if the mouse is over the title bar.
WM_NCLBUTTONDBLCLK - Close the window if the mouse is over system menu button.
WM_NCLBUTTONDOWN - Show system menu or handle minimize & maximize.
WM_NCPAINT - Repaint the non-client area.
WM_NCACTIVATE - Change the title bar color to indicate active/inactive.
This section contains by far the largest portion of code necessary to customize a window's title bar.

We will need to respond to the following window messages to handle the system menu:
WM_SYSCHAR - Show our system menu.
WM_COMMAND - Translate WM_COMMAND messages from our system menu to WM_SYSCOMMAND messages.
WM_KEYDOWN - Fool default handlers into thinking we have no system menu.
WM_KEYUP - Fool default handlers into thinking we have no system menu.
WM_SYSKEYDOWN - Fool default handlers into thinking we have no system menu.
WM_SYSKEYUP - Fool default handlers into thinking we have no system menu.


Also das sollte eine List wichtigsten WM_xx Nachrichten sein, die du selbst behandeln soltest.

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 02, 2005 13:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke mal, dass du gar nicht so weit runter musst. Das Problem liegt nicht an WindowsXP. Es fällt nur dort auf. Bei deinen Anwendungen dürfte erstaunlich viel Platz sein, wenn du diese mit Style programmierst und dann ohne Style anschaust. Bei dem StandardWinXP Style ist die Titelleiste einfach nur größer. Du kannst dieses Problem auch bei windows 2000 haben. Du musst dazu lediglich die Titelleiste größer stellen. Das gleich kann dir auch passieren wenn du einen überdimensional großen Rand (20 Pixel) einstellst.

So viel zu dem wirklichem Problem. ;-)

Du kannst das entweder so lösen in dem du die Position deine Elemente zur Laufzeit berechnest. Höhe und Breite. Oder in dem du eine Klasse erstellst die Methode CreateWnd überschreibst und dort dann die ClientWidth und ClientHeight auf den von dir designten Wert setzt. Zu dem Zeitpunkt existieren noch keinerlei Komponenten auf dem Formular. Wenn sie dann erstellt werden bekommen sie ein Formular was die selber Clientgröße hat wie auch das worauf sie erstellt wurden.

Ds würde dann in etwa so aussehen.
Code:
  1. type
  2.   TForm1Proxy = class (TForm)
  3.   protected
  4.     procedure CreateWnd; override;
  5.   end;
  6.  
  7.   TForm1 = class(TForm1Proxy)
  8. ...
  9.  
  10. implementation
  11.  
  12. procedure TForm1Proxy.CreateWnd;
  13. begin
  14.   inherited;
  15.  
  16.   ClientWidth := 566;
  17.   ClientHeight := 297;
  18. end;


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]