Cпасибо GremlinProg, Вы указали мне направление в котором искать, вот мое решение, работает так как я и хотел:
| Код | if( ((LPNMHDR)lParam) -> code == NM_CUSTOMDRAW ) {
//Шрифт для listview LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
switch( lplvcd -> nmcd.dwDrawStage ) { case CDDS_PREPAINT : return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT: TEXTMETRIC tm; GetTextMetrics(lplvcd->nmcd.hdc, &tm);
LOGFONT font; font.lfHeight = FontSize; font.lfWidth = 0; font.lfEscapement = 0; font.lfOrientation = 0; font.lfWeight = FW_NORMAL; font.lfItalic = tm.tmItalic; font.lfUnderline = tm.tmUnderlined; font.lfStrikeOut = tm.tmStruckOut; font.lfCharSet = tm.tmCharSet; font.lfOutPrecision = PROOF_QUALITY; font.lfClipPrecision = OUT_DEFAULT_PRECIS; font.lfQuality = PROOF_QUALITY; font.lfPitchAndFamily = tm.tmPitchAndFamily; strcpy(font.lfFaceName, "Times New Roman");
hFontViewBold = CreateFontIndirect(&font); SelectObject( lplvcd->nmcd.hdc, hFontViewBold );
int color;
if( ColorFlag == 1 ) color = atoi(buffColorItem1[((int)lplvcd->nmcd.dwItemSpec)]); if( ColorFlag == 2 ) color = atoi(buffColorItem2[((int)lplvcd->nmcd.dwItemSpec)]); if( ColorFlag == 3 ) color = atoi(buffColorItem3[((int)lplvcd->nmcd.dwItemSpec)]); if( (color == 30) || (color == 31) || (color == 130) || (color == 131)) { lplvcd->clrText = RGB(255,0,0); } else if( (color == 20) || (color == 21) || (color == 120) || (color == 121) ) { lplvcd->clrText = RGB(0,255,0); } else { lplvcd->clrText = RGB(0,0,0); } lplvcd->nmcd.uItemState &= ~CDIS_SELECTED; // kill sys sel if (ListView_GetItemState(lplvcd->nmcd.hdr.hwndFrom,(int)lplvcd->nmcd.dwItemSpec,LVIS_SELECTED)) { //В зависимости от color крашу в разный цвет шрифт, color выбирается из моего массива buffColorItem if( (color == 30) || (color == 31) || (color == 130) || (color == 131)) { lplvcd->clrText = RGB( 255, 0, 0 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } else if( (color == 20) || (color == 21) || (color == 120) || (color == 121) ) { lplvcd->clrText = RGB( 0, 255, 0 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } else { lplvcd->clrText = RGB( 255, 255, 255 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } } return CDRF_NEWFONT;
} return CDRF_DODEFAULT; }
|
А вот собственно и решение:
| Код | lplvcd->nmcd.uItemState &= ~CDIS_SELECTED; // kill sys sel if (ListView_GetItemState(lplvcd->nmcd.hdr.hwndFrom,(int)lplvcd->nmcd.dwItemSpec,LVIS_SELECTED)) { //В зависимости от color крашу в разный цвет шрифт, color выбирается из моего массива buffColorItem if( (color == 30) || (color == 31) || (color == 130) || (color == 131)) { lplvcd->clrText = RGB( 255, 0, 0 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } else if( (color == 20) || (color == 21) || (color == 120) || (color == 121) ) { lplvcd->clrText = RGB( 0, 255, 0 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } else { lplvcd->clrText = RGB( 255, 255, 255 ); lplvcd->clrTextBk = RGB( 15, 41, 110 ); } }
|
|