CSliderCtrl & NMCUSTOMDRAW
-
Hallo mal wieder, und schon im vorab Dank für jede Hilfe!
Also ich habe zu Zeit folgendes Problem:
Ich möchte einem CSliderCtrl-Objekt per NMCUSTOMDRAW-Nachricht zusätzliche Informationen hinzufügen das funktioniert soweit auch ganz gut nur scheint beim Aufruf von CWnd::Invalidate() nicht das Control neugezeichnet zu werden, sondern immer nur dann wenn es den Focus verliert.
Meine Frage wäre nun, wie ich das Control komplett neu Zeichnen lassen kann, so das auch die customdraw Anweisungen verarbeitet werden?Noch ein bisschen code:
void CHTSliderCtrl::OnCustomdraw(NMHDR* pNMHDR, LRESULT* pResult) { NMCUSTOMDRAW nmcd = *((LPNMCUSTOMDRAW) pNMHDR); switch( nmcd.dwDrawStage ) { case CDDS_PREPAINT: { *pResult = CDRF_NOTIFYPOSTPAINT; break; } case CDDS_POSTPAINT: { CDC& dc = *(CDC::FromHandle( nmcd.hdc ) ); ... *pResult = CDRF_NOTIFYITEMDRAW; break; } case CDDS_ITEMPREPAINT: { *pResult = CDRF_NOTIFYPOSTPAINT; break; } case CDDS_ITEMPOSTPAINT: { if ( nmcd.dwItemSpec == TBCD_THUMB ) { CDC& dc = *(CDC::FromHandle( nmcd.hdc ) ); ... *pResult = CDRF_DODEFAULT; } break; } } }
Funktioiert sehr gut, nur kann ich eben die Zeichnungsaufforderung nicht manuell senden...
-
Da ist höchstwahrscheinlich irgendwas anderes faul. CWnd::Invalidate() zeichnet das Ding immer komplett neu (sofern die MessageLoop läuft und das Programm nicht irgendwo hängt).