Progress Control Vordergrundfarbe ändern



  • Hallo Forum.

    Ich arbeite mich gerade in VC++ 2005 ein. Hab vorher nur C/C++ programmiert.
    Meine frage ist, wie kann ich die Farbe einer Progress Control ändern.

    Bisher habe ich nur m_membVar.SetBkColor(RGB(r,g,b)); gesehn. Aber es ist wohl für die Hintergrundfarbe. Mir gehts aber um die Vordergrundfarbe.

    Danke für jeden Hinweis.



  • m_memberVar.SendMessage(PBM_SETBARCOLOR,0,(LPARAM) RGB(255,0,0));

    Funktioniert nicht.



  • Was macht (LPARAM)RGB(255,0,0)?

    Mach doch einfach mal

    m_pProgressBar->SendMessage(PBM_SETBARCOLOR, 0, RGB(255,0,0));
    


  • Fehler	1	error C2819: Der Typ 'CProgressCtrl' hat keinen überladenen Elementoperator '->'
    

    geht leider nicht.
    Das Beispiel habe ich von http://www.coding-help.de/fortschritt.html Hab das Beispiel auch rundergeladen, kompiliert -> alles geht, der Balken wird gefärbt.

    Das ist eigentlich eine Pipi-Aufgabe, aber ich bekomme richtige Probleme damit.
    Kann es sein, dass ich die DEFAULT Einstellung irgendwo abschalten soll? Weil das:

    m_ProgressGreen.SendMessage(PBM_SETBARCOLOR, 0, RGB(0, 255, 0));
    m_ProgressBlue.SendMessage(PBM_SETBARCOLOR, 0, RGB(0, 0, 255));
    

    zeigt überhaupt keine Wirkung.

    Ne weitere Frage ist, wie kann ich die Chucks im Balken abschlaten, sodass es eine nicht so in Teile zerhackt ist, sondern kontinuierlich ist?



  • Diese blöde Kake kotzt mich langsam an...

    hab schon alles mögliche Probiert und in MSDN recherchiert...

    das brint mich auch nicht weiter:

    m_ProgressGreen.SendMessage(PBM_SETBARCOLOR, 0, (LPARAM)RGB(255, 0, 0));
    	m_ProgressBlue.SendMessage(PBM_SETBARCOLOR, 0, (LPARAM)RGB(0, 0, 255));
    
    	m_ProgressGreen.Invalidate(FALSE);
    	m_ProgressBlue.Invalidate(FALSE);
    

    hat denn niemand eine idee was es sein könnte??



  • Das soltle eigentlich gehen. Wo rufst du denn die Änderung der Anzeige auf?

    Infos dazu: http://www.coding-help.de/fortschritt.html



  • U8 schrieb:

    [cpp]
    Ne weitere Frage ist, wie kann ich die Chucks im Balken abschlaten, sodass es eine nicht so in Teile zerhackt ist, sondern kontinuierlich ist?

    Stil ändern in XP-Stil.



  • Hallo zusammen,

    danke ersmals für die Hinweise...

    @maRKus23:
    "Stil ändern in XP-Stil." Wie, wo?

    @Uruk-h4j:
    dein linnk ist mir bekannt. ich habe das beispielprojekt runtergeladen kompiliert, alles ging. dann habe ich in meinem Programm 1:1 die progressbar codiert. Aber ohne Erfolg. 😞

    ich rufe die funktionen ebenfalls in einer Methode, wenn ein Button angeklickt wird. Die Progressbar wird in der OnInitDialog initialisiert:

    BOOL CTestprogrammDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
    	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
    
    	// TODO: Hier zusätzliche Initialisierung einfügen
    	m_PRGS_RED.SetRange(0, 100);
    	m_ProgressGreen.SetRange(0,100);
    	m_ProgressBlue.SetRange(0,100);
    	m_PRGS_RED.SetStep(1);
    	m_ProgressGreen.SetStep(1);
    	m_ProgressBlue.SetStep(1);
    
    	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement 
    }
    
    void CTestprogrammDlg::OnBnClickedButton3()
    {
    
    	COLORREF color1, color2;
    	m_ProgressGreen.Invalidate(TRUE);
    	color1 = m_ProgressGreen.SendMessage(PBM_SETBARCOLOR, 0, (LPARAM)RGB(255, 0, 0));
    	m_ProgressGreen.Invalidate(FALSE);
    
    	m_ProgressBlue.Invalidate(TRUE);
    	color2 = m_ProgressBlue.SendMessage(PBM_SETBARCOLOR, 0, (LPARAM)RGB(0, 0, 255));
    	m_ProgressBlue.Invalidate(FALSE);
    	//MessageBox(_T("Daten sind gelesen"));
    }
    

    beim debugen sehe ich, dass color1=0000FF (entspricht also RGB(0,0,255)) und color2=FF0000 (entspricht also RGB(255,0,0))

    es scheint also so zusein, dass die Farben wohl gesetzt werden, aber im Dialog nicht aktualisiert werden. Hat viellicht MFC in VC++ 2005 eine Besonderheit?



  • Ich habe das gleiche Problem.

    Soblad mein Programm XP-Look hat, mit einer manifest Datei, kann ich die ProgressBar nicht mehr färben. Erst ohne XP-Look funktioniert es wunderbar.

    greetz


Anmelden zum Antworten