JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

desktop zeichnen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Legolas87
JLI'ler


Alter: 37
Anmeldedatum: 22.10.2003
Beiträge: 131

Medaillen: Keine

BeitragVerfasst am: 01.02.2005, 11:21    Titel: desktop zeichnen Antworten mit Zitat

wie kann mann auf den desktop zeichnen, also ohne fenster und so?
außerdem: wie macht man ein programm, dass im hintergrund läuft, kein fenster hat, ein shell-notification-icon hat( unten links in der ecke) und auf tastatur zugreifen kann?
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: 01.02.2005, 11:29    Titel: Antworten mit Zitat

Zum 1.: Der Desktop ist bereits ein Fenster! Versuch einfach den DeviceContext des Desktops zu kriegen. Die MSDN hilft Dir darin.

Hinweis: Viele Programme untersagen den Zeichenzugriff auf den Desktop, da der Desktop das 1. Fenster in der Windowshierarchie ist, Zugriff auf den DeviceContext ist sozusagen für viele Programme illegal, beim SP2 wird das sogar mit einer Ausnahmebehandlung enden wenn man nicht genau weiß was man tut.

Zum 2.: Gib mal in der MSDN hook ein, da findet sich einiges zum Thema Keyboardhooking, dann bräuchtest Du noch Threads, da Dein Programm sicherlich nicht 100% der CPU Belastung fressen will.

Zum Thema mit dem Fenster: Erstell doch einfach keines? Wo steht geschrieben das Windowsprogramme Fenster haben müssen?

Mit dem Icon in der Schnellstartleiste bin ich grad überfragt, aber ich glaub wenn du Shell-notification-icon oder TrayIcon (gibt bestimmt von darauf eine Verlinkung in die Schnellstartleiste) in der MSDN eingibst finden sich dazu sicherlich Schnittstellen oder sogar Samples. Obwohl TrayIcons und SchnellstartIcons extrem lästig sind, meiner Meinung nach.
_________________
'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
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 01.02.2005, 12:48    Titel: Antworten mit Zitat

och, naja finde ich net. Wenn man z.B. eine Chat proggen will, muss das immer laufen, damit man auch erreichbar ist, aber die meiste Zeit, würde ein Fenster stören. Und da sollte man dann doch ein kelines Icon haben, mit dem man das Prog aufrufen oder beenden kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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: 01.02.2005, 15:24    Titel: Antworten mit Zitat

Aber du hast nicht zufällig vor, den Chat über das Hintergrundbild zu legen, aber alle anderen Fenster von den Zeichenaktionen unberücksichtigt zu lassen. Das ist nämlich gar nicht so einfach, da das DeviceContext des Desktopfensters über alles rüberzeichnet - einfach so in alle Fenster rein, die sich zufällig gerade auf dem Desktop befinden...
_________________
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: 01.02.2005, 15:25    Titel: Antworten mit Zitat

ne ich meinte nur, das man ja kein Fenster bracuht, wenn man gerade nicht chattet. Wenn man dann chatten will, oder "angechattet" wird, klickt man auf das kleine Symbol, und das chatfenster tut sich auf, so dass man chatten kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 01.02.2005, 16:13    Titel: Antworten mit Zitat

Geht soweit ich weiss problemlos bei mIRC über die Traybar.
_________________
"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
Legolas87
JLI'ler


Alter: 37
Anmeldedatum: 22.10.2003
Beiträge: 131

Medaillen: Keine

BeitragVerfasst am: 31.03.2005, 15:18    Titel: Antworten mit Zitat

Patrick hat Folgendes geschrieben:
Zum 1.: Der Desktop ist bereits ein Fenster! Versuch einfach den DeviceContext des Desktops zu kriegen. Die MSDN hilft Dir darin.

ich kann auf den desktop zeichnen aber nur mit sachen aus dem gdi sieht aber sehr beschränkt aus.
Zitat:

Zum Thema mit dem Fenster: Erstell doch einfach keines? Wo steht geschrieben das Windowsprogramme Fenster haben müssen?

hab ich probiert, dann klappt das mit dem zeichnen aber nicht mehr.


jetzt noch mal für alle (weswegen meine anfangs-frage war):

ich möchte ein programm schreiben, dass beim starten ein bild auf dem desktop anzeigt (so wie ein ladebild vom acrobat reader z.b.), dann als tray icon verschwindet und auf F1-F12 Tasten reagiert.

vielleicht geht es ja auch indem ich zum laden ein fenster ohne rahmen erstelle (aber wie?), sodass man nur das zu ladende bild sehen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
smile_virus
Junior JLI'ler


Alter: 34
Anmeldedatum: 19.08.2004
Beiträge: 64

Medaillen: Keine

BeitragVerfasst am: 01.04.2005, 08:59    Titel: Antworten mit Zitat

Legolas87 hat Folgendes geschrieben:

vielleicht geht es ja auch indem ich zum laden ein fenster ohne rahmen erstelle (aber wie?), sodass man nur das zu ladende bild sehen kann.

da musst du in der CreateWindowEx Funktion (falls du die benutzt) als 4. parameter WS_POPUP angeben
CPP:
CreateWindowEx(NULL,
                          "WindowClass",
                          "titel",
                          WS_POPUP,    // <-----
                          0,0,640,480,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Legolas87
JLI'ler


Alter: 37
Anmeldedatum: 22.10.2003
Beiträge: 131

Medaillen: Keine

BeitragVerfasst am: 04.04.2005, 08:43    Titel: Antworten mit Zitat

danke, ich werds mal testen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 04.04.2005, 16:49    Titel: Re: desktop zeichnen Antworten mit Zitat

Legolas87 hat Folgendes geschrieben:
wie kann mann auf den desktop zeichnen,(...)


Die Frage wurde auch im Buch beantwortet(falls du das 2. hast): S.207 im grauen Kasten; musst der GetDC()-Funktion einfach 0 übergeben, net das Fenster-handle. Weißte ja aber schon...

Nur noch ma zur Erinnerung Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 29.06.2007, 11:39    Titel: Antworten mit Zitat

smile_virus hat Folgendes geschrieben:
Legolas87 hat Folgendes geschrieben:

vielleicht geht es ja auch indem ich zum laden ein fenster ohne rahmen erstelle (aber wie?), sodass man nur das zu ladende bild sehen kann.

da musst du in der CreateWindowEx Funktion (falls du die benutzt) als 4. parameter WS_POPUP angeben


Damit kann man dann doch auch nur ein rechteckiges Bild ohne Alphkanal darstellen, oder ?
Oder kann man da Bilder draufrendern lassen die über die offizielle Fenstergröße hinausragt ?
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: 29.06.2007, 13:55    Titel: Antworten mit Zitat

wenn das Bild über die Fenstergröße herausragt, wird es eben einfach abgeschnitten. Das kann man übr. sowohl für best. Effekte nutzen als auch durch Clipping elegant herausfiltern

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 29.06.2007, 15:26    Titel: Antworten mit Zitat

Wenn du dich mit Region-Objekten rumärgerst, sind auch nichtRechteckige Fenster möglich. Des weiteren kann man heutzutage das gesamte Fenster auch halbtransparent machen
_________________
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
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 08.09.2007, 09:58    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
Des weiteren kann man heutzutage das gesamte Fenster auch halbtransparent machen
Mit welche parametern erreicht man das ?

Und hat das Desktop-Fenster auch ein dircet3d-device weil allein mit dem DC lassen sich ja nicht besonders viele Sachen auf den Desktop "zeichnen".
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Tobias
Mini JLI'ler


Alter: 34
Anmeldedatum: 20.02.2003
Beiträge: 13

Medaillen: Keine

BeitragVerfasst am: 08.09.2007, 14:54    Titel: Antworten mit Zitat

Fenster mit Alpha-Kanal sind möglich, dazu findet ihr in der MSDN unter Layered Windows nähere Informationen. Layered Windows werden jedoch AFAIK erst ab Windows 2000 unterstützt, falls das ein Hindernis sein sollte.

Grundsätzlich geht man dabei so vor, dass man ein Fenster mit dem erweiterten Stil WS_EX_LAYERED erzeugt. Anschließend lassen sich auch fensterübergreifend transparente Inhalte in das Fenster zeichnen, zum Einen etwas beschränkt über die Funktion SetLayeredWindowAttributes, die das Setzen von Color-Keys sowie von Transparenzwerten für das Fenster als ganzes unterstützt - zum Anderen über UpdateLayeredWindow, damit sind auch exzentrischere Fensterformen möglich (mit weichen Transparenzübergängen und -änderungen) - allerdings zu dem Preis, dass ihr dann einiges selbst in die Hand nehmen müsst.
_________________
http://www.alphanew.net/ (Last update: 10.12.2006)

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL 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