CListBox farbe ändern!
-
Hallo Ihr
Ich weiß mit sicherheit war so ein Beitrag schon öfters hier, habe auch im FAQ bereitsnachgeschaut aber irgendwie werd ich nicht schlau daraus!
also mein Problem ich habe die Klasse CColorListBox von Codeprojekt ausgeliehen und versuche nun meine Listbox mit verschienden farbigen Einträgen zu befüllen!
Habe die bereits für Static und Editfelder erfolgreich geschafft! Nur leider funzt es mit der Listbox nicht! Ich hoffe ihr könnt mir helfen.
Also mein Code bis dato:#include "ColorListBox.h" // im der h und der cpp // Im header class CColorDlgDlg : public CDialog { // Construction public: ... // Dialog Data //{{AFX_DATA(CColorDlgDlg) enum { IDD = IDD_COLORDLG_DIALOG }; CColorListBox m_ListControll; //}}AFX_DATA .. }; .. BOOL CColorDlgDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CColorListBox *pDlg = (CColorListBox*)CColorListBox::FromHandle(*GetDlgItem(IDC_LISTBOX)); m_ListControll.SubclassDlgItem(IDC_LISTBOX,this); pDlg->AddString(_T("test1"),RGB(255,0,0)); // ROT pDlg->AddString(_T("test2"),RGB(0,0,255)); // BLAU return TRUE; }CColorListBox *pDlg = ... hab ich aus einen anderen Forenbeitrag von hier!
Leider werden meine Einträge der Listbox nicht farbig!
Weiß jemand woran das liegen könnte, in dem Beispiel von Codeprojekt klappt es super nur bei mir nicht!
sven
-
Servus,
gib mal die URL von CColorListBox. Ich probier das mal aus..
probier das mal aus:
BOOL CColorDlgDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CColorListBox *pDlg = (CColorListBox*)CWnd::GetDlgItem(IDC_LISTBOX); pDlg->AddString(_T("test1"),RGB(255,0,0)); // ROT pDlg->AddString(_T("test2"),RGB(0,0,255)); // BLAU return TRUE; }*winke*
Hellsgore
-
http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c1611
das hatt ich auch schon probiert
leider auch nicht!
sven
-
Servus,
ist nicht so schwer. Ich schreibe dir mal kurz wie du das machst:
1. Erstelle ein ListBox Control
2. Binde die ColorListBox.cpp und .h in dein Projekt ein
3. Unter Properties, von deiner ListBox, die Einstellungen, "Has Strings" auf TRUE und "Owner Draw" auf Variable
4. Gehe in deine *Dlg.h, include die ColorListBox.h und erstelle eine Membervar:#include "ColorListBox.h" . . . . public: CColorListBox m_clColorList;5. Gehe in deine *Dlg.cpp und füge deine Membervar ein:
void CDeinDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_DEINELISTBOXID, m_clColorList); }6. Füge deinen Text ein:
void CDeinDlg::OnWasWeissIchButton() { m_clColorList.AddString("BlaBla", RGB(200,50,50)); }und das wars schon

Viel Spass
*winke*
Hellsgore
-
Jeep danke!
Funzt soweit!
Wäre jetzt noch interessant zu wissen warum das selbe projekt nicht unter PPC funzt! Das ist mal wieder zum kozten! unter vc6.0 supergummi gut und unter eVC kannst das zum Mondschießen!
Ich danke dir trotzedem sehr für deine Tips! Ich hatte es auch schon fast so weit hinbekommen aber die Eigenschaften der Listbox hatte ich wohl vergessen!
thx a lotWenn wer weiß wie das für eVC klappt
BITTE POSTEN !!!
sven
-
Servus,
ich habe keinen Plan von embedded aber wenn du dem Text nur eine Farbe zuweisen willst, kannst du das auch über WM_CTLCOLOR machen.
Du fügst in deinem Projekt die Methode OnCtlColor damit ein:
HBRUSH CArrayTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID()==IDC_DEINELISTID) { pDC->SetTextColor(RGB(255,0,0)); //Textfarbe pDC->SetBkMode(TRANSPARENT); HBRUSH B = CreateSolidBrush(RGB(192,192,192)); //Hintergrundfarbe return (HBRUSH) B; } return hbr; }Vielleicht hilft dir das weiter...
*winke*
Hellsgore
-
Danke aber das hat ich auch schon in probiert! Leider habe ich dann alle Einträge in der besagten Farbe! Aber ich will nur einen der Einträge z.b in Blau haben!
Oder kann ich ihm über diese Methode irgendwie sagen das er nur einen Eintrag in Blau macht?
Wenn das geht wär das mit sicherheit ne lösung!
Weißt du das was?thx sven