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
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
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.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.