Problem mit Design

WhiteShadow

Mitglied
Hallo

Ich verwende Borland c++ Builder 6
Ich will ein Fenster bewegen können ohne immer oben klicken zu müssen

Also das oben ist bei mir nun weg
25376attachment.jpg

Nun hab ich das Design mit eigenem Schließen/Maximieren...
25377attachment.jpg

Doch wenn ich den Designteil bewegen will geht das nicht weil es ja wie ein Bild ist was eingefügt wurde damit es an den Kanten die abgerundet sind durchsichtig ist.(das weiße im Hintergrund ist dann durchsichtig)
Nun die Frage. Wie kann ich das machen damit ich das Bild bewegen kann bzw mein Design wie ein Fenster funktioniert ohne das man das normale obere vom Windows benötigt.
[Edit]
Also ich möchte nur das ich ein Design-Fenster habe welches ich verschieben kann, weil es dann nunmal die Controlleiste mit schließen,Maximieren,Minimieren nicht mehr hat. Es muss doch gehen!?
Und ist es möglich bestimmte Teile zum teil Transparent zu machen also nicht 100% durchsichtig. Also zb Hintergrund ist fast durchsichtig und in diesem Fenster befinden sich Buttons und so die nicht durchsichtig sind.
Also ich kann auch mit Visual c++ 2005 arbeiten wenns da einer eher weiß.
[Edit2]
Ok das mit dem Verschieben hab ich nun hinbekommen :) aber das mit der zweiten Frage noch nicht ^^
[Edit3]

Also das mit der Transparenz aber nicht 100% hat nicht geklappt. Hab da noch n keines Problem. Die Scripte für: Schließen, Maximieren, Minimieren gehen nicht (eigene Buttons). Da kommt immer n Fehler. Kann mir jemand n Button script schnell schicken: Button dann der Code der auf dem Button ist zum schließen, max...

Danke.

Mit freundlichen Grüßen
WhiteShadow
 
Zuletzt bearbeitet:
Das erste hast du ja gelöst (mit WM_NCHITTEST und HTCLIENT wäre die einfachste Methode).

Für das zweite musst du dir die SetLayeredAttributes-Methode ansehen, die gibt es allerdings nur ab Windows 2000. Dafür musst du in den Präprozessor-Einstellungen das Define WINVER=0x0500 einsetzen.
 
Hallo

Also ich hab ein weiteres Problem. Ich möchte innerhalb des Formulars ein weiteres öffnen lassen was eine bestimmte Position hat. Sie soll aber durch ein Buttonklick erst angezeigt werden und dem Hauptformular folgen und dann durch den gleichen Button wieder geschloßen werden. Also eine art Popup an einer bestimmten Position.
(uff mist sry ich wiederhole mich ^^)

MFG
 
Also praktisch ein "Kind"-Fenster in das Hauptfenster einblenden?

Das geht in der Win32-API, indem du dem Kind-Fenster den WS_CHILD-Stil verpasst. Wenn du es erstellst, musst du als Parent-HWND das Hauptfenster angeben. Die Koordinaten sind dann relativ zu der Client-Area des Hauptfensters.

Wie sich der Vorgang in der Borland-Umsetzung darstellt, kann ich dir allerdings nicht sagen; es müsste aber eigentlich dafür die entsprechenden Befehle/Konstanten geben.
 
Hallo

Also mit den Fenster im Fenster hat geklappt, nur ist das "Kind" Fenster nun von anfang an da und wenn ich es schließe wird es immer noch als Leiste (wo Schließen,Maximiere...) angezeigt. Und ich kann keine bestimmte Position festlegen für das Childwindow . Ich will es immer an einer ganz bestimmten Stelle im Mainwindow haben und es soll an dieser stelle bleiben und dort geschloßen und geöffnet werden.

MFG
WhiteShadow
 
Das Kind-Fenster darf dann natürlich die Titelleisten- und Rahmenstyles nicht gesetzt haben (sonst kann man es minimieren und rumschieben).

Benutze mal nur WS_CHILD. Um das Fenster dann ein- bzw. auszublenden, benutze ShowWindow( hwndChild, SW_SHOW bzw. SW_HIDE ).

Die Position kannst du beim Erstellen bei CreateWindow(Ex) mit angeben oder nachträglich mit SetWindowPos bzw. MoveWindow verändern.
 
Zurück