[C++] Non Client Area

04/12/2011 19:26 -Dragonlord-#1
Hallo Leute,

Ich hab mich in letzter Zeit etwas mit Win 32 Programmierung beschäftigt. Ich würde nun gerne den Non Client Bereich der Anwendung sprich die Titelleiste die Controlbuttons usw. gestalten bzw. zeichnen. Nur leider weiß ich nicht wirklich wie das geht und im Internet finde ich dazu auch nicht besonders viel, das mir hilft. Kann mir vllt jemand ein Tutorial schreiben oder mir Tipps geben wie ich vorgehen soll?

MfG,

Dragonlord
04/12/2011 19:38 batitun#2
Redlichen und derglich töften Nachmittag,
Sehr geehrter Herr -Dragonlord-

Mit einem ähnlichem Thema habe ich mich letztens auch auseinandergesetzt.
Ich würde mich freuen wenn jemand da man was in die Richtung releasen würde ,
Meinen Dank hätte er .

:P

Recht gediegenen Nachmittag,
Batituuuuuuuuuuuuuuuuuuuuun
04/17/2011 20:27 -Dragonlord-#3
Weiß denn wirklich keiner wie das funktioniert? Oder hab ich die Frage falsch gestellt? Ihr könnt ruhig Gegenfragen stellen. Mein Hauptziel ist es einfach ein Programm zu schreiben, das alle Windowsfensterfunktionen (z.B. die Snap Funktion von Windows 7) hat aber einen eigenen Rand/Titelleiste hat. Ein Beispiel für ein Programm mit diesen Funktionen ist Adobe Photoshop.
(Ein Bild ist im Anhang)

MfG,

Dragonlord
04/17/2011 20:30 MrSm!th#4
Machst du es per MFC (oder einem anderen Framework?) oder purer WinApi?

Für ersteres könnte ich eventuell Hilfestellung geben, von zweiterem hab ich so gut wie keine Ahnung.
04/17/2011 20:41 -Dragonlord-#5
Ich kenn mich mit MFC leider überhaupt nicht aus. Also ich hab mit Win32 (ich nehm mal das ist dann pure WinApi ) nen paar simple Programme geschrieben und ganz zu Anfang mit Windows Form Anwendungen rumprobiert. Damit kenn ich mich auch ziemlich gut aus, aber ich weiß nich ob man dort auch irgendwie in den Non Client Bereich eingreifen kann.

MfG,

Dragonlord
04/17/2011 21:47 MrSm!th#6
Quote:
Originally Posted by -Dragonlord- View Post
Ich kenn mich mit MFC leider überhaupt nicht aus. Also ich hab mit Win32 (ich nehm mal das ist dann pure WinApi ) nen paar simple Programme geschrieben und ganz zu Anfang mit Windows Form Anwendungen rumprobiert. Damit kenn ich mich auch ziemlich gut aus, aber ich weiß nich ob man dort auch irgendwie in den Non Client Bereich eingreifen kann.

MfG,

Dragonlord
Nun, Windows Forms klingt eher nach dem .NET GUI, also hast du wohl Managed C++ Projekte, richtig? Da geht es denke ich mal relativ einfach, wenn man weiß, wie.

Respekt, Anwendungen mit der C Winapi (ja Win32) zu schreiben, ist ne riesen Arbeit; ne DIN A4 Seite Code um ein simples Fenster anzeigen zu lassen...
Das ist mir so schon zu viel Aufwand, da kann ich dir nicht noch bei spezielleren Themen wie Verändern des Non-Client Bereichs helfen ;<
04/17/2011 22:03 -Dragonlord-#7
Ja, das ist ein .NET Framework und ein Managed C++ Projekt. Würde mich freuen, wenn du mir helfen könntest.

MfG,

Dragonlord
04/17/2011 22:21 MrSm!th#8
Von Managed C++ hab ich so wirklich 0 Ahnung, hat auch damit zutun, dass ich die Verbindung einfach grässlich finde; wenn man .NET nutzen will, sollte man lieber zu C# greifen.

Da kann ich dir also gar nicht helfen, aber such mal eventuell nach der Nachricht WM_NCPAINT, damit solltest du bestimmt Code finden, der etwas mit dem Non-Client Bereich macht, wie zb. das Aussehen der Titelbar verändern.
04/17/2011 22:48 -Dragonlord-#9
Okay mach ich, aber gibts die WM_NCPAINT Message nicht nur in Win32?

MfG,

Dragonlord
04/17/2011 22:50 MrSm!th#10
Auch das .NET Framework und die MFC basieren irgendwie auf Win32, schließlich läuft es auf dem Windows Betriebssystem.

Und natürlich läuft das GUI System in .NET auch über Messages, also sollte es NCPAINT auch geben, auch wenn sie vielleicht nicht genau WM_NCPAINT heißt und irgendeinen Hexadezimalwert zugewiesen hat, wie in der C WinApi.
04/17/2011 23:14 -Dragonlord-#11
Hm... irgendwie find ich so auf die Schnelle nichts dazu und die meisten Ergebnisse beziehen sich wieder auf Win32 und ich bekomme es einfach nicht in Win32 diese custom titlebar zu schreiben. Kannst du mir vielleicht zeigen wie du das mit einer MFC machen würdest oder mir ein Beispielcode für ein Win32-Programm mit custom titlebar (WM_NCPAINT, WM_NCACTIVE, WM_NCCALCSIZE ...) suchen? Ich selbst finde dazu nämlich kein ganzen bzw. funktionierenden Beispielcode.

MfG,

Dragonlord
04/17/2011 23:18 MrSm!th#12
Bei der MFC kannst du im Resource Editor auch das Aussehen der Toolbar usw. bearbeiten, wenn es keine Dialogfeld basierende Anwendung ist.