Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Legolas87 JLI'ler
Alter: 37 Anmeldedatum: 22.10.2003 Beiträge: 131
Medaillen: Keine
|
Verfasst am: 01.02.2005, 11:21 Titel: desktop zeichnen |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 01.02.2005, 11:29 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 01.02.2005, 12:48 Titel: |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 01.02.2005, 15:24 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 01.02.2005, 15:25 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 01.02.2005, 16:13 Titel: |
|
|
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 |
|
|
Legolas87 JLI'ler
Alter: 37 Anmeldedatum: 22.10.2003 Beiträge: 131
Medaillen: Keine
|
Verfasst am: 31.03.2005, 15:18 Titel: |
|
|
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 |
|
|
smile_virus Junior JLI'ler
Alter: 34 Anmeldedatum: 19.08.2004 Beiträge: 64
Medaillen: Keine
|
Verfasst am: 01.04.2005, 08:59 Titel: |
|
|
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 |
|
|
Legolas87 JLI'ler
Alter: 37 Anmeldedatum: 22.10.2003 Beiträge: 131
Medaillen: Keine
|
Verfasst am: 04.04.2005, 08:43 Titel: |
|
|
danke, ich werds mal testen |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.04.2005, 16:49 Titel: Re: desktop zeichnen |
|
|
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 |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 29.06.2007, 11:39 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 29.06.2007, 13:55 Titel: |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 29.06.2007, 15:26 Titel: |
|
|
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 |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 08.09.2007, 09:58 Titel: |
|
|
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 |
|
|
Tobias Mini JLI'ler
Alter: 34 Anmeldedatum: 20.02.2003 Beiträge: 13
Medaillen: Keine
|
Verfasst am: 08.09.2007, 14:54 Titel: |
|
|
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 |
|
|
|