mgheinz1001
Grünschnabel
Hallo,
ich habe ein Problem mit CListCtrl: ich möchte einzelne List-(Sub)Items verschieden einfärben. Dazu habe ich zunächst in der Fenster-Klasse, die das CListCtrl-Control enthält die Methode 'OnNotify' hinzugefügt. Hier werde ich benachrichtigt, wenn ein (Sub)Item neu gezeichnet wird und ich kann dieses dann direkt beeinflussen:
BOOL ParentWindow::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
// 'CDDS_PREPAINT'-Nachricht abfangen
if(lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)
{
// 'CDRF_NOTIFYITEMDRAW' zurückgeben -
// danach gibt es immer eine Benachrichtigung, wenn ein
// (Sub)Item neu gezeichnet wird
*pResult = CDRF_NOTIFYITEMDRAW;
return true;
}
.....
das funktioniert soweit auch sehr gut! das Problem ist allerdings, dass nachdem der if-Zweig ausgeführt wurde, die zweite Zeile der Liste nicht mehr selektierbar ist. außerdem ist die zweite Spalte der liste in ihrer Größe nicht mehr anpassbar.
hat da jemand vielleicht ein Lösung für mich? bin für jede Hilfe sehr dankbar!
ich habe ein Problem mit CListCtrl: ich möchte einzelne List-(Sub)Items verschieden einfärben. Dazu habe ich zunächst in der Fenster-Klasse, die das CListCtrl-Control enthält die Methode 'OnNotify' hinzugefügt. Hier werde ich benachrichtigt, wenn ein (Sub)Item neu gezeichnet wird und ich kann dieses dann direkt beeinflussen:
BOOL ParentWindow::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
// 'CDDS_PREPAINT'-Nachricht abfangen
if(lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)
{
// 'CDRF_NOTIFYITEMDRAW' zurückgeben -
// danach gibt es immer eine Benachrichtigung, wenn ein
// (Sub)Item neu gezeichnet wird
*pResult = CDRF_NOTIFYITEMDRAW;
return true;
}
.....
das funktioniert soweit auch sehr gut! das Problem ist allerdings, dass nachdem der if-Zweig ausgeführt wurde, die zweite Zeile der Liste nicht mehr selektierbar ist. außerdem ist die zweite Spalte der liste in ihrer Größe nicht mehr anpassbar.
hat da jemand vielleicht ein Lösung für mich? bin für jede Hilfe sehr dankbar!