Hintergrundfarbe ändern ???



  • Hallöchen,

    ich möchte die Hintergrundfarbe meines Dialogfensters ändern.
    Dazu habe ich die folgende Funktion gefunden:

    SetDialogBkColor( RGB(0,80,150), RGB(255,0,0) );

    Allerdings bekomme ich ne Fehlermeldung wenn ich das in mein Progrämmchen einfüge ???

    BOOL CAtc_starterDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    SetDialogBkColor( RGB(0,80,150), RGB(255,0,0) );
    .
    .
    .

    Was mache ich falsch ???

    THX Gooes

    PS: Fehlermeldung :

    error C2065: 'SetDialogBkColor' : nichtdeklarierter Bezeichner

    [ Dieser Beitrag wurde am 16.10.2002 um 01:14 Uhr von goose editiert. ]



  • aus der MSDN:

    Call this member function from within the InitInstance member function to set the default background and text color for dialog boxes and message boxes within your application.



  • Danke,

    jetzt bin ich genauso schlau wie vorher...

    THX



  • Original erstellt von Nemesyzz:
    **aus der MSDN:

    [quote]Call this member function from within the

    > InitInstance <<<

    member function to set the default background and text color for dialog boxes and message boxes within your application.

    **

    [/QUOTE]



  • Ich dachte wir sind hier in nem Forum wo einem geholfen wird.

    Auf die MSDN brauchst du nicht verweisen würde ich sagen da die wohl jeder selber von uns hat und da auch selber nachlesen kann oder?!

    Na ja auch ein sinnloser post ist ein post!!!

    Ok und nun mal was was NICHT aus der MSDN ist:
    Füge das in deine funktion "BOOL CHelpDlg::OnInitDialog()":

    m_brush.CreateSolidBrush(RGB(236,233,0)); //Farbe für den Dialog

    aber bitte unter die erste "{"!!!
    Wenn du diese Funktion nicht hast dann geh bitte in den Klassen-Assisten und erstelle dort die Klasse "WM_INTDIALOG".
    So jetzt legst erstellst du noch die Funktion "WM_CTLCOLOR" im Klassen-Assistent und clickst bitte auf "Code bearbeiten".
    Da fügst du jetzt genau über "return hbr;" die folgende zeile ein:

    return (HBRUSH)m_brush; //Hier wird die Farbe auf den Dialog gebracht

    Soweit so gut aber wirst du wenn du jetzt compilieren tust noch den Fehler bekommen das m_brush eine nichtdeklarierte variable ist und darum legen wir die mal noch eben schnell an.
    Du hast **standardmäsig ganz links in deiner Entwicklungsumgebung ein Fenster wo unten einige Registriekarten sind und da clickst du bitte mal auf die Karte "Klassen" und dann mit der RECHTEN Maustaste auf den Dialog in dem die Farbe geändert werden soll. In dem folgenden Menü clickst du auf "Member-Variable hinzufügen".
    In dem neuen Fenster gibst du als Variablentyp "CBrush" ein und als Variablenname "m_brush" eingeben und den Zugriffsstatus auf "puplik" hacken.
    So nun noch auf ok clicken und mal combeilieren (F7 drücken) und wenn du deine Anwendung nun startest hat sie ne andere Farbe.

    Was zu beachten ist ist das jetzt alle Statischen Felder nicht mit gefärbt werden!!!
    Wenn auch diese gefärbt werden sollen mußt du noch folgendes machen.
    Den folgenden Code must du in die Funktion "HBRUSH CHelpDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)" die du ja vor nich all zu langer zeit angelegt hast wieder über die zeile "return hbr;" einfügen. (du findest diese Funktion in der Datei "CdeinDialognameDlg.cpp")

    pDC->SetTextColor(RGB(0,0,255)); //Hier wird Statischer Text gefärbt
    pDC->SetBkColor(RGB(236,233,216)); //Hier wird Statisches Feld gefärbt

    So wenn du noch fragen hast melde dich einfach hier und wir sehen was wir machen können.

    MfG Nico**



  • @nicolaus

    Also ich möchte doch mal bitten!! Wieso sch...t Du Leute an, die die richtige Erklärung gegeben haben???

    Denn nemesyzz sagte, dass die Funktion SetDialogBkColor in der Funktion InitInstance aufgerufen werden muss.

    Einfach schlussfolgernd: Man suche sich die InitInstance-Funktion (DIESE GIBTS NUR 1x) und schreibe den Befehl dort rein. Soviel Logik sollte man doch jedem zutrauen können, oder nicht?



  • RenéG schrieb:

    @nicolaus

    <Also ich möchte doch mal bitten!! Wieso sch...t Du Leute an, die die richtige <Erklärung gegeben haben???

    <Denn nemesyzz sagte, dass die Funktion SetDialogBkColor in der Funktion <InitInstance aufgerufen werden muss.

    Nein, sagt er nicht, er "schreibt" ein paar planlose Sätze ohne Kommentar.

    <Einfach schlussfolgernd: Man suche sich die InitInstance-Funktion (DIESE GIBTS <NUR 1x) und schreibe den Befehl dort rein. Soviel Logik sollte man doch jedem <zutrauen können, oder nicht?

    klare Antwort: Nein !
    sorry, ich bin saudumm !!


Anmelden zum Antworten