JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[WinAPI] Visibility eines Windows
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 19.01.2006, 19:19    Titel: [WinAPI] Visibility eines Windows Antworten mit Zitat

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 Smile . 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 Arrow kein Title Arrow 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:30    Titel: Antworten mit Zitat

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 Very Happy

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:32    Titel: Antworten mit Zitat

Du elendes faules Stück *********! Laughing

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:34    Titel: Antworten mit Zitat

Patrick hat Folgendes geschrieben:
Du elendes faules Stück *********! Laughing

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 Wink ich wusste dass du das machst ^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:36    Titel: Antworten mit Zitat

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" Wink
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 19:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 20:35    Titel: Antworten mit Zitat

Ich wette wiel er damit die einzelnen Elemente einfacher plazieren kann Wink
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 20:36    Titel: Antworten mit Zitat

Jonathan_Klein
Dafür macht man sich ein Rastersystem und nicht sowas.
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 19.01.2006, 20:57    Titel: Antworten mit Zitat

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 Wink )

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.01.2006, 00:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.01.2006, 01:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.01.2006, 11:12    Titel: Antworten mit Zitat

TLOP
hey danke, klapp wunderbar Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
FH
Super JLI'ler


Alter: 37
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 20:01    Titel: Antworten mit Zitat

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. Wink
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
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 20:25    Titel: Antworten mit Zitat

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. Wink
Gruß

FH

keine Sorge, hab ne globale HBRUSH Buerste(weil ich die Farben inGame änder), die wird ordnungsgemäß reallokiert Wink

Aber danke, dass dus gesagt hast
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum