Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:19 Titel: [WinAPI] Visibility eines Windows |
|
|
Hi,
ich bin das Suchen leid. Die MSDN hängt mir zum Halse raus, und ich kann die Zeit viel besser für was anderes gebrauchen, also das Problem:
Ich habe einen Dialog, der über den ganzen Desktop geht. Innen drin habe ich ein Fenster, ohne jeden Titel etc, nur ein Kasten vollgemalt mit schönen Sachen von DX. Der Dialog soll nun immer aktiv sein, also wenn ich das Fenster anklicke, soll der Balkentitel oben net aufhören so schön dunkelblau zu sein . Das Fenster soll nun aber immer im Vordergrund sein, d.h.: Jetzt ist das Fenster, sobald ich den Dialog anklicke, inaktiv und verschwindet hinter den Dialog. Mit welchen Styles kriege ich das hin, dass das Fenster da bleibt?
BTW: z.Z. hab ich bei createWindowEx() dwStyle = WS_POPUP | WS_VISIBLE; also kein Overlappedwindow kein Title einsamer blauer Kasten. So solls auch bleiben. Der User soll gar net merken, dass da zw. dem gezeichneten und dem DIalog noch ein Fenster schwebt(in ein Fenster kann man schöner zeichnen als in einen Dialog)
Gruß DirectXer, HFH und Thx for it |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:24 Titel: |
|
|
1. Wenn es um 2D geht nimm GDI. DirectX hat in Dialogboxen nichts zu suchen.
2. Damit sich das Fenster nicht deaktiviert, einfach die Deaktivierungsmessage abfangen: CPP: | case WM_NCACTIVATE:
return DefWindowProc(hWnd, iMsg, TRUE, lParam); |
3. Immer im Vordergrund: Geht mit CreateWindowEx, doch dafür brauchst Du die Extensionstruct für die Fensterklassenregistierung. Mehr dazu: MSDN _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:30 Titel: |
|
|
erstmal thx
Patrick hat Folgendes geschrieben: | 1. Wenn es um 2D geht nimm GDI. DirectX hat in Dialogboxen nichts zu suchen. |
darüber hatte ich mit dir ja schonmal gesprochen, ich nimm jetz aber doch D3D, da ich früher oder später auch 3-dimensionale Körper dareinzeichne.
Patrick hat Folgendes geschrieben: | 2. Damit sich das Fenster nicht deaktiviert, einfach die Deaktivierungsmessage abfangen: CPP: | case WM_NCACTIVATE:
return DefWindowProc(hWnd, iMsg, TRUE, lParam); |
|
gut, dialog is immer aktiv, klappt
Patrick hat Folgendes geschrieben: | 3. Immer im Vordergrund: Geht mit CreateWindowEx, doch dafür brauchst Du die Extensionstruct für die Fensterklassenregistierung. Mehr dazu: MSDN |
och nöö, schon wieder suchen... naja, ich setz mich dann da morgen dran, vllt postet ja einer noch was anderes. Heut hab ich genug von MSDN
So, dann dir Thx, hast mich weitergebracht
Gruß DirectXer |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:32 Titel: |
|
|
Du elendes faules Stück *********!
Meine Güte!
1. http://msdn.microsoft.com/ aufrufen
2. CreateWindowEx eingeben
3. den 1. suchtreffer öffnen (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp )
4. WS_EX_TOPMOST lesen!
Mein gott, das dauert net mal 10 sekunden! Jesus _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:34 Titel: |
|
|
Patrick hat Folgendes geschrieben: | Du elendes faules Stück *********!
Meine Güte!
1. http://msdn.microsoft.com/ aufrufen
2. CreateWindowEx eingeben
3. den 1. suchtreffer öffnen (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp )
4. WS_EX_TOPMOST lesen!
Mein gott, das dauert net mal 10 sekunden! Jesus |
na geht doch, danke ich wusste dass du das machst ^^ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:36 Titel: |
|
|
DirectXer
Wenn ich noch 1x von Dir lese das Du zu faul bist die MSDN zu lesen, mach ich das nicht mehr. Vorallem da das 3. ja wohl mehr als lächerlich war als ich das sagte mit Extensionstruct.
Sorry, aber das ist etwas "peinlich"  _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 19.01.2006, 19:56 Titel: |
|
|
Wobei TOPMOST-Dialoge nicht das sind, was er meint, denke ich jedenfalls:
Ich bin der Meinung, er möchte einen Dialog haben, das ein Childwindow enthält - und da braucht er kein TopMost oder was auch immer - er muss sein Fenster mit dem Dialog als Parent einrichten. Bei CreateWindow[Ex]() gibt es einen Parameter, der das Parentwindow festlegt. Dieser müsste dann eben das Wnd des Dialoges sein. Ich denke jedenfalls dass er das so gemeint hatte...
BTW.: Wieso überhaupt ein Dialog, wenn er dann doch über den gesamten Desktop geht? _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 19.01.2006, 20:35 Titel: |
|
|
Ich wette wiel er damit die einzelnen Elemente einfacher plazieren kann  _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 19.01.2006, 20:57 Titel: |
|
|
ne, das was ich wollte, hat schon do geklappt. Soll dann ein Programm werden, komplett im Dialog(weil man da so schön Schaltflächen, Label usw. platzieren und bearbeiten kann) und dadrin ein Fenster für die grafische Darstellung. Wird ein Konstruktionsprogramm (Blender2D in 1000x veringerter Form, vllt mach ich dann noch 3d-Körper. Mein Lehrer hat mich dazu genötigt )
Gruß DirectXer |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 22.01.2006, 00:57 Titel: |
|
|
hmm, hab noch ne Frage. Lohnt sich aber net für nen neuen Thread:
Wo kann ich die Farbe eines Dialogs ändern? Wenn möglich im Dialog-Editor. Ich hab ne Klasse CColorDialog in der MSDN gefunden, aber die wäre im Code...
Thx und Gruß DirectXer |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.01.2006, 01:52 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | hmm, hab noch ne Frage. Lohnt sich aber net für nen neuen Thread:
Wo kann ich die Farbe eines Dialogs ändern? Wenn möglich im Dialog-Editor. Ich hab ne Klasse CColorDialog in der MSDN gefunden, aber die wäre im Code...
Thx und Gruß DirectXer |
Ich weiß nicht wie/obs mit dem Dialog-Editor geht, aber es geht auch so ziemlich einfach...
Du musst nur eine Nachricht abfangen, die gesendet wird, bevor der Dialog gezeichnet wird(WM_CTLCOLORDLG). Deine Nachrichtencallback-Funktion für den Dialog muss dann in dem Fall nur noch eine HBRUSH Variable zurückgeben.
CPP: | //CallbackMessageHandler()
switch(Message)
{
//[...]
//Wird gesendet, bevor Dialog gezeichnet wird
case WM_CTLCOLORDLG: return (LONG)CreateSolidBrush(RGB(255, 0, 0));
//[...]
} |
_________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 22.01.2006, 11:12 Titel: |
|
|
TLOP
hey danke, klapp wunderbar  |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 27.01.2006, 20:01 Titel: |
|
|
Was mit noch anzumerken bleibt: Ihr erzeugt AFAIK ein Memory-Leak.
Doku :: WM_CTLCOLORDLG hat Folgendes geschrieben: | The system does not automatically destroy the returned brush. It is the application's responsibility to destroy the brush when it is no longer needed. |
Also: Den Brush mitspeichern und am Ende wieder zerstören! Wenn ihr das Ding so einfach zurückgebt, habt ihr ein wunderschönes MemLeak erzeugt.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 27.01.2006, 20:25 Titel: |
|
|
FH hat Folgendes geschrieben: | Was mit noch anzumerken bleibt: Ihr erzeugt AFAIK ein Memory-Leak.
Doku :: WM_CTLCOLORDLG hat Folgendes geschrieben: | The system does not automatically destroy the returned brush. It is the application's responsibility to destroy the brush when it is no longer needed. |
Also: Den Brush mitspeichern und am Ende wieder zerstören! Wenn ihr das Ding so einfach zurückgebt, habt ihr ein wunderschönes MemLeak erzeugt.
Gruß
FH |
keine Sorge, hab ne globale HBRUSH Buerste(weil ich die Farben inGame änder), die wird ordnungsgemäß reallokiert
Aber danke, dass dus gesagt hast |
|
Nach oben |
|
 |
|