005
20.02.2006, 12:09 Uhr
~blub
Gast
|
Hey,
danke für das konkrete Beispiel, aber bei mir im Resourceneditor hat die CListCtrl kein Ereignis NM_CUSTOMDRAW oder dergleichen....vielleicht sollte ich auch erwähnen, dass ich WindowsCE benutze...also mit VisualStudio Embedded 4.0 programmiere....
Und zweitens: was müsste man tun, damit die ListItems größer werden??....Da ich einen Touchscreen haben, müssen die einfach n bissl größer sein, als normal...
Besten Dank....
Zitat von mmc20: |
hi, also wenns nur um farben geht... da hab ich mal (vor langer, langer zeit) was "gebastelt"
C++: |
///////////////////////////////////////////////////////////////////////////// // XListCtrl.h
class XListCtrl : public CListCtrl { // Konstruktion public: XListCtrl();
private: struct MEMBERS { COLORREF crText1, crText2, crTextBk1, crTextBk2; } m;
// Überschreibungen // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen //{{AFX_VIRTUAL(XListCtrl) //}}AFX_VIRTUAL
// Implementierung public: void SetTextColors(COLORREF col1, COLORREF col2); void SetBkColors(COLORREF col1, COLORREF col2); virtual ~XListCtrl();
// Generierte Nachrichtenzuordnungsfunktionen protected: //{{AFX_MSG(XListCtrl) afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG
DECLARE_MESSAGE_MAP() }; /////////////////////////////////////////////////////////////////////////////
|
C++: |
///////////////////////////////////////////////////////////////////////////// // XListCtrl.cpp
XListCtrl::XListCtrl() { m.crText1 = m.crText2 = 0x000000; m.crTextBk1 = m.crTextBk2 = 0xFFFFFF; }
XListCtrl::~XListCtrl() { }
BEGIN_MESSAGE_MAP(XListCtrl, CListCtrl) //{{AFX_MSG_MAP(XListCtrl) ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw) //}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten XListCtrl
void XListCtrl::SetBkColors(COLORREF col1, COLORREF col2) { m.crTextBk1 = col1; m.crTextBk2 = col2; }
void XListCtrl::SetTextColors(COLORREF col1, COLORREF col2) { m.crText1 = col1; m.crText2 = col2; }
void XListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
if (lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (lplvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT) { *pResult = CDRF_NOTIFYSUBITEMDRAW; if ( (lplvcd->nmcd.dwItemSpec & 0x1) == 0 ) { lplvcd->clrText = m.crText1; lplvcd->clrTextBk = m.crTextBk1; } else { lplvcd->clrText = m.crText2; lplvcd->clrTextBk = m.crTextBk2; } } else if (lplvcd->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT | CDDS_SUBITEM)) { *pResult = CDRF_DODEFAULT; } }
|
damit kannste jeder zweiten zeile eine andere farbe+hintergrundfarbe geben
|
|