JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=eea0a1adf02ca0cf7a8f5b38b696dd18Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Zeichenoperationen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 28.02.2009, 11:40    Titel: Zeichenoperationen Antworten mit Zitat

hi ich bins mal wieder mit einer FRAGE Rolling Eyes
wenn man bei windows zeichenoperationen statt dem fensterhandle
NULL angibt, wird dann auf den dektop gezeichnet Question
danke im vorraus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 28.02.2009, 12:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 28.02.2009, 12:33    Titel: Danke Antworten mit Zitat

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


Alter: 32
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 28.02.2009, 12:49    Titel: Re: Danke Antworten mit Zitat

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



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 28.02.2009, 13:07    Titel: Antworten mit Zitat

danke, aber mit alt+f4 weiß ich schon... hab ich vergessen hinzuschreiben.
Embarassed 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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 28.02.2009, 16:11    Titel: Antworten mit Zitat

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


Alter: 32
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.03.2009, 14:10    Titel: Antworten mit Zitat

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


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

BeitragVerfasst am: 01.03.2009, 17:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 35
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.03.2009, 22:57    Titel: Antworten mit Zitat

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


Alter: 32
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 02.03.2009, 12:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 35
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 02.03.2009, 13:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
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