|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 28.02.2009, 11:40 Titel: Zeichenoperationen |
|
|
hi ich bins mal wieder mit einer FRAGE
wenn man bei windows zeichenoperationen statt dem fensterhandle
NULL angibt, wird dann auf den dektop gezeichnet
danke im vorraus |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 28.02.2009, 12:25 Titel: |
|
|
Einfach:
Ja und Nein.
Genau:
Für eine Zeichenoperation benötigt man ein DeviceContext.
Und, um ein DeviceContext zu bekommen ruft man entweder BeginPaint auf (das funkioniert nur innerhalb von WM_PAINT, wofür man ein eigenes Fenster braucht) - oder man nutzt GetWindowDC, welche als Parameter unter anderem ein Fensterhandle haben möchte. Und wenn dieses Fensterhandle NULL ist, wird der gesamte Desktop genutzt.
Siehe mein ResourcenTutorial von letzter Woche, da Erzeuge ich unter anderem ein DeviceContext. _________________
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 |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 28.02.2009, 12:33 Titel: Danke |
|
|
Danke!!!
Aber wenn ich dann tatsächlich ein programm mache, das kein fenster hat, sondern auf den desktop z.b. schreibt, kann ich es dann nur über den task-manager schließen???
wie ich DC erzeuge weiß ich |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 28.02.2009, 12:49 Titel: Re: Danke |
|
|
magigman hat Folgendes geschrieben: | Aber wenn ich dann tatsächlich ein programm mache, das kein fenster hat, sondern auf den desktop z.b. schreibt, kann ich es dann nur über den task-manager schließen??? |
Über das X in der rechten oberen Ecke natürlich nicht. Aber solange dein Programm den Fokus hat, kann es wie gewöhnlich auf Tastatureingaben reagieren. Alt+F4 wäre die einfachste Variante, die du nicht mal selbst implementieren musst.
Und wenn das Programm auf der Taskleiste angezeigt wird, natürlich auch über diesen Weg. _________________ 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 |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 28.02.2009, 13:07 Titel: |
|
|
danke, aber mit alt+f4 weiß ich schon... hab ich vergessen hinzuschreiben.
wenn ich jedoch ein fenster erstelle, aber nicht in dieses zeichne, sondern auf den desktop, dann kann ich es doch über das fenster schließen... d.h. wenn ich bei dem dann leeren fenster auf das X drücke geht auch die schrift vom desktop oder??? |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 28.02.2009, 16:11 Titel: |
|
|
Um Alt+F4 zu verwenden, muss dein Proramm eine "Nachrichtenbehandlungsrouine" haben. Selbst, wenn du selst die Alt+F4-Kombination nicht verarbeitest, macht das die "Defaultbehandlungsroutine". Aber ohne eigenes Fenster kannst du keine solche Routine unter deiner Kontrolle haben. Ohne Kontrolle hast du niemals ein Focus. Ohne Focus kannst du nicht "klicken".
Dein Programm läuft also ohne Benutzerinterface und muss sich selbst beenden.
Kann es das aufgrund einer Endlosschleife nicht, läuft es, bis es durch das Betriebssystem beendet wird, z.B. mit Hilfe des Taskmanagers oder beim beenden von Windows. _________________
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.03.2009, 14:10 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | Aber ohne eigenes Fenster kannst du keine solche Routine unter deiner Kontrolle haben. |
Kann man nicht trotz fremdem Handle eine eigene Nachrichtenverarbeitung haben? _________________ 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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 01.03.2009, 17:49 Titel: |
|
|
Mit Subclassing geht das.
Aber das ist mit Sicherheit kein einfaches Thema.
Ausserdem ist Interprozesskommunikation (welche ebenfalls dazugehört) keine Sache, die man mal eben so aus dem Stehgreif heraus programmieren kann.
Ich will hier keinen beleidigen, etwas gar nicht erst zu versuchen. Aber Das geht weit über eine einfache Terminerinnerung hinaus. _________________
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 01.03.2009, 22:57 Titel: |
|
|
Soll er halt ein unsichtbares Fenster erstellen und sich in die Traybar einnisten.
- es stört nicht in der Taskbar
- er hat eine Nachrichtenschleife
- kann das Programm beenden durch ein Contextmenü/Doppelklick am Trayicon _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 02.03.2009, 12:49 Titel: |
|
|
Fallen hat Folgendes geschrieben: | Soll er halt ein unsichtbares Fenster erstellen und sich in die Traybar einnisten.
- es stört nicht in der Taskbar
- er hat eine Nachrichtenschleife
- kann das Programm beenden durch ein Contextmenü/Doppelklick am Trayicon |
Ja, so hatte ich mir das auch vorgestellt.
Muss man nicht sowieso ein eigenes Fenster erstellen und lediglich den DC vom Desktop holen? _________________ 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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.03.2009, 13:35 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | Fallen hat Folgendes geschrieben: | Soll er halt ein unsichtbares Fenster erstellen und sich in die Traybar einnisten.
- es stört nicht in der Taskbar
- er hat eine Nachrichtenschleife
- kann das Programm beenden durch ein Contextmenü/Doppelklick am Trayicon |
Ja, so hatte ich mir das auch vorgestellt.
Muss man nicht sowieso ein eigenes Fenster erstellen und lediglich den DC vom Desktop holen? |
Bei dem was er im Anfangspost erwähnt hat eigentlich nicht, reicht aus wenn er sich nur den DC vom Desktop nimmt. Ein eigenes Fenster ist nicht nötig wenn er nur das machen möchte. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
|
|
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
|