Parent-background neu zeichnen



  • @me-ss-on: Oha sry aber ähm, wie lächerlich ist denn bitte Dein Post ... hab selten so gelacht... 😃 ... Wie hast Du es geschafft so viel Schwachsinn in einem Post zu verpacken ?

    Kleines Beispiel:

    me-ss-on schrieb:

    Bitte darum, die sinnlose und vollkommen inkompetent- inhaltsfreie, degradierende Antwort von Devil aus diesem Post zu löschen.

    ⚠ ➡

    me-ss-on schrieb:

    Ich benutze globale Variablen, weil ich das lokal nicht hinbekomme

    Jo, und das ist schlicht weg ... ähm 'inkompetent' ?! 😃

    oder, der ist auch schön:

    me-ss-on schrieb:

    und es kann auch gar nicht daran liegen ,dass ich nicht weiss, was ich da tue, weil ich das C seit 2-3 Jahren code..

    Hm 'das C' ... *grübel* ... das hohe 'C' oder 'Hohes C' (...wie war das nochmal...so wichtig wie das tägliche Brot... 😃 ) ? 😃 ...

    me-ss-on schrieb:

    anstatt mal zu sagen, was ich tun müsste, um auf Buttonklick das Parent neu zu zeichnen.

    InvalidateRect...

    Globale Farbvariable ( KEINE GLOBALEN , UHH uHHH uhHH, wat der labert).

    Jo und das Schlimme (für Dich) ist dabei ja noch, dass er dabei noch Recht hat... hmm Du sagtest, dass Du schon 2-3 Jahre (oder Tage hm...) codest...dann solltest Du eigentlich das Schlüsselwort static kennen, oder *zwinker* ?

    @(D)Evil: Ich glaub ich würd mich auf die Diskussion gar nicht mehr einlassen 😉 .



  • @CodeFinder: Hmm da er mich in nem anderen Forum auch angegriffen hat ... weil ich ihm dort ebenfalls eine ähnliche Antwort gegeben habe, weil er auch dort den Code gepostet hat, werde ich das auch net tun 😉 Aber is schon lustig der junge 🤡



  • Wahnsinn!!
    So schön den anderen unterstützen.
    Kommt ihr hiernach vielleicht dann mir dreien?!?!?
    und dann mit vier?
    Und dann bringt ihr das nagnz board gegen mich auf?
    ...
    ..weil ich hierhin kam um Hilfe zu bekommen, aber ihr mir nichts liefert, als ein Fenstergrundgerüst mit ebenso unnötigen castst wie meine?

    Ich habt Recht:
    Lasst Euch hierdrauf echt nicht weiter ein.



  • Was regst du dich denn so auf? Man versucht dir doch zu helfen und du hast doch auch Antworten für dein Problem bekommen 💡

    Und wenn du keine Kritik vertragen kannst dann bist du in einem Forum glaub ich falsch aufgehoben. Dir will doch niemand was böses, sie wissen es nur besser und lassen dich an ihrem Wissen teil haben 😃

    MfG schirrmie



  • ich habe deren Hilfe angenommen, schon des öfteren.
    Aber die klappt halt nicht.
    Und da müssen die gar nicht versuchen, so HYPERINTELLIGENT zu klingen, ich könnte hier auch meinen IQ posten, und dann erwarten, dass mich Menschen für King-Dingeling halten.
    Aber dann müssten meine Tipps auch was bringen!
    Generell hasse ich so Arten von Menschen , die mit dieser "anonymen Tastenidentität" denken, ihre "englischen Teetrinkerargumentationen" hyper-überallemstehend dartellen zu können.Deren Tipps sind unvollständig, und nicht griffig nicht fundiert und wenn se nicht klappen, dann fühlen die sich "von einem zu dummen nicht verstanden".
    Da muss ich hin und wieder mal schreiben, was ich davon halte.
    Ich kann auch so geschwollen quatschen und dick erzählen, dass ich viel wüsste, wenn mir das was brächte, egal auf welcher Ebene ist es nur posing.
    Und wer hat posen nötig? GENAU, nur diejenigen, die.........
    Egal!
    ----------
    Nun habe ich eine static COLORREF( vorher static BRUSH) global.
    Und die Membervariable hbrBackground nimmt sich immer diese als
    Farbquelle, per CreateSolidBrush(diese static colorref).
    Der Button wird geklickt, löst aus, dass die global bekannte static colorref
    mit dem RGB Wert 20,20,20 initialisiert wird.
    Ein RedrawWindow, ein UpdateWindow, ein InvalidateRect danach bringen NICHTS!
    Also ob diese Variable nie geändert worden wäre, wird weiter mit blau ausgemalt, bei jedem neupaint.
    Und das ist verwunderlich, und so sehr dubios, dass ich echt nicht mehr weiter weiss, und die posten sone Scheisse wie, SCHWACHSINN und so.
    Aber was GENAU die machen würden, kommt nicht.
    Sondern: ich würde mal static verwenden oder ich würde mal InvalidateRectangle verwdenden oder ich würde oder ich würde oder ich würde.
    Ich würde das hier gerne nicht fragen müssenm, aber es ist so und ich tus.
    Und entgegen derer Ideen: Ne Lösung des Problems sieht so aus:

    const char p_solving[] ="Deine Loesung ist";
     // und hier würde dann einfach das stehen, was ich zur HÖLLE nochmal 
     // nicht hinkrich, und zwar als Quellcode
     // dann könnten die mich auch beleidigen, was sie wollen
     // nur klappen sollte der TIPP!
     // jetzt müsste meine (anfangs fälschliche Aggressin zu deutende) Position
     // klar sein.
    

    Hoffe, nun klar gemacht zu haben, warum ich so schreibe, wenn andere ihre "rosa Servietten. Itelligenz" auspacken, (Zitat: wenn das Niveau dann mal erreicht ist)....
    Danke bisher!



  • Lol du bist echt die härte kann mich hier nur beieiern. Ich glaube du hast nicht kapiert worum es in einem Forum geht. Wenn du ein fertiges Programm haben willst dann pack dein Thread in das Projekte Forum weiter unten.
    Dir werden Hilfestellungen gegeben, den Rest musst du alleine Probieren. Und dann wenn es immer noch nicht funktioniert deine weiteren Schritte Posten und was nicht funktioniert. Lol so wie du dich aufführst wird dir keiner so recht helfen wollen du nimmst ja alles persönlich 🙂

    Achja kannst du mit der MSDN umgehen? Aber die labert ja auch nur Klugscheißerisch Englisch daher 😃

    Viel Erfolg für dein Problem!

    MfG schirrmie



  • Ich habe das Problem.
    Gibt Menschen, die auch eher sagen: Guck mal hier. Und versuch mal das.
    Anstatt "Schwachsinn, mies, zu dumm und zu lahm."
    Und die sagten mir auch, dass ich zB, mal sehen soll, was denn wäre wenn ich ( und genau das meinte ich mit der Frage: gibbet keine elegante Lösung) einfach mal hbrBackground auf 0 setze, und den Hintergrund als eigenständiges Rectangle mal.
    Sowas zu sagen bracht keiner klar zustande, dabei ist es doch nicht so schwer:
    Mal doch den Hinergrund selber, und gib der Klasse o als hbrBackground an.
    Das ist nämlich etwas verzwickt, einfach mal nen Hinergrund unzufärben.
    Glaubt mir.
    MSDN kenn ich.Nutz ich, sonst wäre ich schon öfters hier gewesen!
    N fertiges Prog will ich nicht, aber auch kein rumgedisse, von Menschen, die sich selber als (oberpros mit NIVEAI ansehen) und dann asi daherquatschen.
    Aber ich habe es gepackt, und da wurde auch kein kompletter Qodeschnipsel gepostet, sondern sogar etwas in TP, was ich vor 8 Jahren zu letzt SAH.
    Hat dennoch geklappt.
    War gut dokumentiert, nett gesprochen, Kritik kam auch, aber auf einem Niveau, dass Arrogant beinahe schon rectfertigt, im Vergleich zu Devil.
    Danke!



  • case 3: 
    { 
      SetClassLong(
        hparentw,
        GCL_HBRBACKGROUND,
        (LONG)CreateSolidBrush(RGB(rand()%255,rand()%255,rand()%255)));
    
      InvalidateRect(hparentw,NULL,TRUE);
      break; 
    }
    

    hparentw muß global und nicht lokal in WinMain() deklariert werden.

    Mit SelectObject() stellst du nur die Brush für Zeichenoperationen wie FillRect() ein. Um die Brush für den Fensterhintergrund zu ändern musst du mit SetClassLong() die Brush der Fensterklasse ändern.

    Außerdem darfst du nicht mwinhan verwenden sondern hparentw. Wenn der Fensterfunktion die Message eines Controls gesendet wird, dann enthält dieser Parameter das Fensterhandle des Controls und nicht das des Parentfensters! Deshalb muß hparentw auch global sein.

    Wenn InvalidateRect() als Parameter NULL bekommt, dann wird automatisch die ganze Clientarea invalidiert.



  • Danke. Ich habe es nun so gelöst:
    Ich setzte hbrBckground=0 bei der Fensterstrukturinitialisierung.
    Statdessen habe ich in der WM_PAINT ein Rectangle neu gezeichnet, was den Hintergrund "simuliert".
    Dieses wird seine neue Farbe aus einer globalen Variable innerhalb der WndProc beziehen, die immer gesetzt wird, wenn ich klick.
    Somit habe ich nicht den BAckgrounnd eingefärbt, sondern ein Rechteck, dass
    sich als so einer verhält.
    Aber deine Lösung ist genau , das was ich suchte:
    Den Background der Window-Struktur um zu färben.
    Aber warum muss der Elternhandle gobal deklariert werden, wenn ich ihn doch per Referenz an die WndProc übergebe!?!?
    Dann hat er den handle doch per call by reference, oder nicht!??!

    --



  • me-sss-on schrieb:

    Aber warum muss der Elternhandle gobal deklariert werden, wenn ich ihn doch per Referenz an die WndProc übergebe!?!?

    Wie meinst Du das ?
    Die "WndProc" ist eine CALLBACK-Funktion, d.h. sie muss zwar implementiert sein, aber sie wird nirgendwo aufgerufen.
    Sie wird nur vom Betriebssystem aufgerufen. Deshalb kannst Du ihr nichts übergeben.
    Wenn Du die "WndProc" selbst aufrufst, enthält Dein Programm einen schweren Strukturfehler der sich früher oder später als fatal erweisen wird.
    Deshalb sollte das Elternhandle global deklariert sein, weil Du auf diese Art und Weise innerhalb der "WndProc" Zugriff auf das Eltenhandle hast ohne die "WndProc" selbst aufrufen zu müssen.


Anmelden zum Antworten