Fenster wie Bitmap behandeln?



  • Moin,

    gibt es eine Möglichkeit (gibt es bestimmt) ein Fenster wie ein Bitmap zu behandeln, mich interessiert in dem Fall die Eigenschaft, das Fenster einfach (wie ein Bitmap) an einer beliebigen Stelle mehrmals zu zeichnen OHNE es mit MoveWindow([...]) zu verschieben oder immer mit Variablen abzufragen, ob das Fenster bereits "benutzt" ist und evtl. eine neu erstellte Kopie zu zeichnen usw. .

    Da es da ja bestimmt etwas gibt, werdet ihr mir helfen, oda?

    Ich bin für vieles offen, nur für Mist und sonstige koplizierte Sachen nicht 🙂

    Euer ItsNotYou

    P.S.: Ich möchte auch keine extra-Libaries benutzen, nur Plain WINAPI-C



  • Erklär doch mal vernünftig. Ich finde deine Erklärung zu kopliziert!



  • hm, also, wenn amn ein bitmap hat, kann man das ja einfach mit bitblt zeichnen, beliebig oft.

    Fenster werden meinesachtens nur verschoben, nicht (wie das oben genannte Bitamp) beliebig oft gezeichnet.

    Um das Bitmap muss man sich weniger kümmern, einmal zeichnen reicht.

    bei fenstern muss man die immer wieder verschieben.

    Mein Ziel ist es, ein Fenster wie das gaanz oben beschrieben Bitmap zu handhaben, man erstellt es einmal und kann beliebig zeichnen, viele kleine kopien... ohne neue fenster - also neue handles - handhaben zu müssen



  • Ich verstehe nicht so ganz, was du dir davon erhoffst, denn wenn du die Fenster nicht mehr als richtige Fenster erstellst, dann hast du ja auch keine WndProc mehr und musst dir quasi alles selber zusammenbastlen. Oder habe ich dich nur falsch verstanden 😕



  • Also: du hast ein Fenster und von diesem willst du endlos viele Kopien in Form von Bmps machen, richtig?
    Wenn diese Bitmaps nur statisch sein sollen, sprich sich nicht veraendern sollen, wenn sich das Fenster veraendert (Beispielsweise, weil ein Button gedrueckt wird) dann wuerde ich einfach einen Screenshot des gesamten Bidlschirms machen (Suche: Screenshot) und aus diesem den Teil des Fensters extrahieren und als Bitmap speichern. Das extrahieren kannst du über die Koordinaten des Fensters bewerkstelligen, wenn du die Bmp nicht in der Groesse veraenderst (sie also die gleiche Aufloesung wie der Desktop hat).

    Sollen sie sich mit dem Fenster veraendern wuerde mir jetzt nur einfallen, die Bmps staendig zu aktualisieren, wenn eine Paint Message ankommt oder aehnliches. Das halte ich aber nich für sehr effizient.

    Hoffe, das traf deine Frage 😉

    Gruss,
    DeSoVoDaMu



  • na ok, da das jetzt nciht unbedingt in die richtung ging, die ich brauche, hier erweitert: kann man regions über bitmaps legen und diese bitmpas dann mit bitblt zeichnen?

    damit meine ich nicht ein fenster anlegen, region drüber, bitmap als hintergrund und fertig, sondern region DIREKT auf das bitmap.

    ich hoffe, ihr könnt mir da helfen



  • Kannst du nicht mal genauer sagen, was du im Endeffekt vorhast - so werde ich aus deinen Ausführungungen auch nicht wirklich schlauer 🙄
    Willst du quasi ein Clipping anhand einer Region -> InvalidateRgn, ValidateRgn 😕



  • mehrere bitmaps liegen übereinander, das oberste soll an den stellen der farbe 100/100/100 das untere bitmap zeigen



  • Dann blitte erst die untere Bitmap und dann mit TransparentBlt() die obere Bitmap drüber ?

    (PSDK sagt noch: Win95/98: TransparentBlt contains a memory leak that can exhaust system resources. To draw a transparent bitmap using BitBlt, see Knowledge Base article 79212.)



  • Vielen Dank, das ist ziemlich genau was ich gesucht habe.

    Ich habe nur noch ein Problem: Der Befehl "TransparentBlt" wird vom Compiler nicht gefunden (`TransparentBlt' undeclared (first use this function)), obwohl ich - wie in der MSDN beschrieben - windows.h includiert habe.

    Kann mir jemand helfen, das zu begradigen?



  • die Funktion solltest du am besten gar nicht benutzen weil sie ein memory leak hat unter windows 95 und 98.



  • Du könntest evtl. auch mit AlphaBlend() was anfangen können.
    (Platform SDK installiert ?!)


Anmelden zum Antworten