grafik als dialoghintergrund



  • hallo

    ich hab jetzt ne bitmap als hintergrund in meinem dialog eingefügt. (als picture control) und die auf transparent gesetzt.

    nur: die halben dialogfelder sind jetzt dahinter verschwunden (speziell textedit) oder tauchen erst auf, wenn ich sie anklicke (oder zumindest dahin klicke wo sie eigentlcih sein sollten).

    was sollte ich da tun? ich will doch nur, dass die bitmap als hintergrund von meinem dialog verwendet wird.



  • Hi,

    die Methode OnPaint() deiner Dialogklasse wird aufgerufen, wenn die Dialogbox neu gezeichnet werden soll.
    Da gibt es eine if Abfrage, ob sie gerade Minimiert ist oder nicht.
    Also schreibst du in den Block nach dem else den Code, um deine Bitmap auf die Dialogbox zu blitten.
    Aber vor dem Befehl "CDialog::OnPaint();" da mit diesem die Knöpfe und so gezeichnet werden.



  • hmm, ich hab eigentlich gar keinen code. ich hab nur im ressourceneditor das pic control eingefügt. was für ein code wär das. und wo krieg ich die funktion onpaint her? du redest von einem if. wenn ich onpaint manuell dazuschreib is das sicher noch nicht da.



  • Setz mal alle anderen Controlls auf transparent und das picture auf nicht transparent.



  • cool, danke. hab da wohl genau verkehrt herum gedacht.

    trotzdem noch ein problem: die static textfelder haben eine andere hintergrundfarbe als mein picture. und der eckige rand um die schrift herum hat jetzt natürlcih diese farbe. ich möchte aber nur die schrift angezeigt haben, nicht das ganze staticfeld.

    thx



  • Versuchs mit dieser Klasse.



  • cool. das geht. gibts sowas auch für checkbox und radiobutton?



  • ach und noch was: meine buttons sehen jetzt auch reichlich seltsam aus. so mit nem richtig dicken schwarzen rand. was kann man da machen?



  • Als erstes werden Dialoghintergründe nicht mit irgendwelchen controls festgelegt! Dazu werden funktion in der dialogklasse verwendet

    der ansatz mit OnPaint(); war ja schon ganz gut blos leider nicht ganz korrekt: statt der allgemeinen funktion zum zeichnen WM_PAINT
    nimmst du die spezielle nur für hintergründe WM_ERASEBKGND

    es sollten sich controls niemals überlagern weshalb es verwerflich ist eine bitmap durch ein control in den hintergrund zu legen



  • ok, habs jetzt anders gemacht und die grafik als hintergrund festgelegt, nicht als control

    trotzdem sehen meine buttons hässlich aus. zumindest im xp-style. da ist ein dicker schwarzer rand drum herum. in der vorschau vom vs werden die buttons in einem anderem style angezeigt. da schauts gut aus. nur ausgeführt passts dann nicht mehr. was kann ich da machen.



  • mir wär eigentlich schon geholfen, wenn ich wüsste, wie man bei buttons festlegt, dass sie im windows-standard-style und nicht im xp-style angezeigt werden.


Anmelden zum Antworten