Totenkopf



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Schön, dass der Threadtitel so viel über das Problem aussagt. 😡



  • wen interessiert der threadtitel? naja egal...
    also erstell ein fenster über CreateWindowEx mit dem Style WS_EX_TOPMOST (glaube das war so) dann einfach als nächsten Fensterstyle nur WS_POPUP, nichts anderes, und das Image dann einfach ins dc des Fensters blitten. Falls du damit nicht klarkommst, dann mach nen static ins fenster und lade da das bild rein (wie das geht steht irgendwo in der faq)

    Mfg Ominion



  • Und falls dir das ÜBERHAUPT nichts sagt, solltest du erst einmal die Grundlagen lernen, bevor du hier weiter fragst.



  • Ominion|off schrieb:

    wen interessiert der threadtitel? naja egal...

    Zum Beispiel die Leute, die im Vorhinein wissen wollen, ob es sich lohnt den Thread zu öffnen.



  • wieso lohnt? suchst du dir anhand des threadtitels aus, ob du den leuten hilfst, oder vllt sogar noch was lernst? ich mache so ziemlich jeden thread auf, auch wenn ich davon keine ahnung habe. ob ich dann helfen kann ist ne andere frage...

    mfg Ominion



  • ob ich dann helfen kann ist ne andere frage...

    Genau das ist der Stichpunkt. Aussagekräftige Titel sagen schon im Voraus, ob der Benutzer dem jenigen helfen kann oder nicht. Zudem gehört das einfach zu den Regeln einer Community. Wäre es ein vernünftiger Titel gewesen, wäre hier auch nicht diese Diskussion entstanden.



  • die wäre auch nicht entstanden, wenn ich dazu nichts gesagt hätte...ich meinte damit auch nur, dass mich ein titel weder abschreckt noch anspornt, und somit die threads auch nummeriert sein könnten (wäre bloß für die sufu blöd) - ich würde sie trotzdem lesen...

    mfg Ominion



  • Du brauchst kein Fenster erstellen.
    Wenn du der GetDC funktion 0 übergibst bekommst du den Devicekontext vom ganzen Bildschirm.
    Mit diesem Kontext kannst du dann einfach ein Bild ausgeben, dieses erscheint dann auf dem Bildschirm ganz unabhängig von irgendeinem Programmfenster.
    Damit das Bild jedoch nicht sofort wieder überzeichnet wird (die Texte der Desktopsymbole wie z.B. Arbeitsplatz usw. werden regelmäßig aktualisiert) solltest du das Bild in regelmäßigen Abständen neu zeichnen.
    Das bild bleibt so lange aktiv bis das Programm geschlossen wird und darüber hinaus noch so lange bis das Bild das nächste mal überzeichnet wird (einfach deinen Browser öffnen).



  • @Ominion|off: Mag sein, dass Du nichts anderes zu tun hast - okay, dann ist die folgende Erklärung für Dich nicht (warscheinlich aber für Lukie) zutreffend - aber wenn man im Titel des Threads sieht, dass es um ein Thema geht, wovon man gar keine Ahnung hat, so brauch man sich den Thread auch erst gar nicht durchlesen. Des Weiteren kommt man bei einer eventuellen Suche, wesentlich leichter vorran, wenn der Titel aussagekräftiger ist. Naja... .

    Die Methode von Kahino ist zwar eine ganz gute Idee, aber nicht unbedingt sinnvoll, da das sicherlich zum flackern führen wurde. Die sauberste Methode ist folgende:
    Erstelle Dir ein Fenster (CreateWindowEx, WS_EX_TOPMOST, WS_POPUP), erstelle eine auf das Bild zugeschnittene Region, welche dann auf das Fenster gesetzt wird. Anschließend musst Du unter WM_PAINT das Bild in den Client-DC blitten, das automatische Clipping verhindert dann auch, dass es daneben geht (wobei das sowieso nicht der Fall ist, wenn Du die Koordinaten richtig setzt).
    Eventuell empfiehlt sich noch, WM_LBUTTONDOWN abzufangen und durch Umleitung an WM_SYSCOMMAND via HTCAPTION (WPARAM), das wie ein Klick auf die Titelleiste aussehen zu lassen; damit kann man das Fenster auch verschieben 😉 .



  • Ich habe meine Methode getestet und flackern tut das ganze nicht.

    Aber sauber ist meine Methode nun wirklich nicht, da hast du recht.
    Viel mehr sogar nach das Gegenteil ... aber dafür ist sie kurz : D

    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
    {
    	HDC hdc;
    	hdc = GetDC(0);
    
    	while(1)
    	{
    		Rectangle(hdc, 400, 300, 800, 600);
    
    		if(GetAsyncKeyState(VK_ESCAPE))
    			return 0;
    	}
    	return 0;
    }
    

    Der Vorteil von dieser Methode ist, dass dieses Programm in der Startleiste weder als Fenstersymbol noch als Systraysymbol erscheint und auch nicht unter den Anwendungen im Task-Manager aufgelistet ist(mit dem passenden Namen fällt das Ding dann auch im Prozess-Manager nicht uaf).
    Und wenn man wen erschrecken will wäre das schon von Vorteil.

    Naturlich gäbe es auch für diesen Zweck eine bessere Möglichkeit ... doch die wäre wieder so lang 😉

    ------
    Statt dem Rectangle müsste man hier halt nur ein Bildschen anzeigen.



  • hehe echt net das proggy^^

    habe das ausversehen gestartet 😃 cpu war total im eimer^^



  • Showball schrieb:

    habe das ausversehen gestartet 😃 cpu war total im eimer^^

    Dann musst du ne neue kaufen.



  • Ominion|off schrieb:

    die wäre auch nicht entstanden, wenn ich dazu nichts gesagt hätte...ich meinte damit auch nur, dass mich ein titel weder abschreckt noch anspornt, und somit die threads auch nummeriert sein könnten (wäre bloß für die sufu blöd) - ich würde sie trotzdem lesen...

    mfg Ominion

    Was sagt mir denn der Titel "Totenkopf"? Ich würde höchstens darauf schließen, daß Du unter die Computer-Piraten- also Trojaner-Hacker gegangen bist. 👎

    Ein Titel wie "Totenkopf in Fenster blitten-wie?" wäre doch wesentlich aussagekräftiger, oder?


Anmelden zum Antworten