Schrift vergrößern



  • nur wenn der Button gedrückt wird soll der Text gefärbt werden?
    dann mach ne Bool Member die du true setzt OnButton4
    die OnCtrlColor bleibt wo sie war, nicht in die OnButton die wird schon von selbst aufgerufen (vertrau der MFC) in der OnCtrlColor machste dann noch in deine if blabla IDC_Kraft && deine Boolmember == TRUE



  • ja ok

    hab ich soweit gemacht
    auch keine fehler mehr

    aber muss ich die denn jetzt nicht in einen timer reinpacken?

    weil so wie ich das jetzt verstanden habe, ruft er die doch nur einmal beim start des programms auf, oder?



  • nein bei jedem neuzeichnen! Beim mini-Maximieren, beim drop down einer Combobox bei Buttonclicks ... setzt doch mal einen Breakpoint drauf und schau mal wie oft du an die Stelle kommst, dann siehste das ziemlich schnell! Ist denn Jetzt dein Text wie du ihn willst?



  • Genau, das mit dem Breakpoint ist ne gute Möglichkeit.
    Besser ist allerdings ein TRACE, weil dann das Programm nicht angehalten wird.

    if (pWnd->GetDlgCtrlID() == IDC_Kraft)
    {
            pDC->SetTextColor(RGB(Rot,Gelb,Blau));
            TRACE("Farbe für IDC_Kraft\n");
    }
    

    Und dann per F5 starten und die Ausgabe im Auge behalten. 🙂



  • BOOL farbe;
    
    farbe = FALSE;  // OnInitDialog
    
    HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    	if (pWnd->GetDlgCtrlID() == IDC_Kraft && farbe == TRUE)
    
    	pDC->SetTextColor(RGB(Rot,Gelb,Blau));
    
    	// TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
    	return hbr;
    }
    
    void CAFKWin32XPDlg::OnButton4() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	//OnCtlColor(NULL,NULL,NULL,150,243,250);
    	Rot = 150;
    	Gelb = 0;
    	Blau = 0;
    	farbe = TRUE;
    }
    

    aber wird nicht rot *wein*



  • Nur um mal sicherzugehen: Das Edit ist nicht disabled? Weil dann geht das leider nicht.

    Funktioniert das färben denn so?

    HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        if (pWnd->GetDlgCtrlID() == IDC_Kraft)
        {
            pDC->SetTextColor(RGB(Rot,Gelb,Blau));
        }
        // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
        return hbr;
    }
    


  • jo, so funzt es



  • ist aber ein Textfeld, kein Eingabefeld



  • Ah, also ein Static. 💡
    ...sollte egal sein. 😉

    Nächster Versuch:

    HBRUSH CAFKWin32XPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        if ((pWnd->GetDlgCtrlID() == IDC_Kraft) && (farbe == TRUE))
    
        pDC->SetTextColor(RGB(Rot,Gelb,Blau));
    
        // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
        return hbr;
    }
    


  • nö, daran hats leider auch nicht gelegen *ggg*

    aber wer weiß, wo man manchmal klammer setzt, hilft es echt weiter 🙂



  • ker, warum gibt es keine stinknormale funktion, die ich einfach aufrufen kann????

    irgendwie in einem button oder so

    GetDlgItem(IDC_Kraft)->SetTextColor(red);

    und fertig....



  • Gehts jetzt oder nicht? 😕

    Den bool brauchst du doch auch gar nicht, Hauptsache Rot, Geld und Blau sind richtig gefüllt, oder? 🙂
    Achja, hast du daran gedacht, die z.b. jeweils mit 0 zu initialisieren? 🙂



  • neee, funzt nicht

    ja, an das initialisieren habe ich auch gedacht
    wird eigentlich normalerweise im konstruktor gemacht

    hab es aber mal ausnahmsweise in die OnInitDialig mit reingenommen



  • Ist das Projekt sehr groß oder geheim? Sonst schick es mir mal - eigentlich müßte der kleine Bool nix mehr kaputt machen... 🙂
    estartu_de@c-plusplus.net



  • jo, is da eigentlich



  • HBRUSH CCAFKWin32XPDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    	if (pWnd->GetDlgCtrlID() == IDC_Kraft)
    	{
    		pDC->SetTextColor(RGB(Rot,Gelb,Blau));
    	}
    
    	// TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
    	return hbr;
    }
    
    void CCAFKWin32XPDlgDlg::OnButton1() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	Rot = 0;
    	Gelb = 0;
    	Blau = 255;
    	Invalidate();
    }
    

    So ist es zu Anfang Rot und wenn ich den Knopf gedrückt habe Blau. 🙂
    Das wolltest du doch, oder?



  • krasse sache

    es funktioniert *gg*
    dankeschön

    aber was hat das

    Invalidate()

    zu bedeuten?



  • neuzeichnen
    MSDN sagt:

    Invalidates the entire client area of CWnd. The client area is marked for painting when the next WM_PAINT message occurs. The region can also be validated before a WM_PAINT message occurs by the ValidateRect or ValidateRgn member function

    @Estartu ich war schneller :p 😉 😃



  • Polofreak schrieb:

    @Estartu ich war schneller :p 😉 😃

    Ist dein gutes Recht, ich hab das nur gewußt, weil ich deinen Beitrag vorhin gelesen habe... 👍
    Den Befehl vergesse ich immer wieder. 🙄

    Achja, drauf gekommen bin ich folgendermaßen:
    Ich hatte nen Breakpoint in di if gesetzt und da ging es plötzlich.
    Sowas zeigt meistens, dass ein Neuzeichnen fehlt. 💡



  • estartu_de schrieb:

    ...Achja, drauf gekommen bin ich folgendermaßen:
    Ich hatte nen Breakpoint in di if gesetzt und da ging es plötzlich.
    Sowas zeigt meistens, dass ein Neuzeichnen fehlt. 💡

    Wow guter Tip! Wenn ich so drüber nachdenk logisch! *merk!*


Anmelden zum Antworten