2013-11-29 6 views
0

Ну, я могу изменить цвет Button создать с помощью Createwindow контроль с помощью пользовательского draw.But цвет кнопки по-прежнему черный Я хочу изменить этот цвет. Есть ли какое-либо свойство в CustomDraw, чтобы изменить текст цвет. Вот мой код для изменения цвета фонаИзменить цвет текста кнопки

case WM_NOTIFY: 
    switch (((LPNMHDR)lParam) -> code) 
    { 
     case NM_CUSTOMDRAW: 
      if (((LPNMHDR)lParam) -> idFrom == 10002) 
      { 
       LPNMCUSTOMDRAW lpnmCD = (LPNMCUSTOMDRAW)lParam; 
       switch (lpnmCD -> dwDrawStage) 
       { 
        case CDDS_PREPAINT: 
         SetDCBrushColor(lpnmCD -> hdc, RGB(0, 255, 0)); 
         SetDCPenColor(lpnmCD -> hdc, RGB(0, 255, 0)); 
         SelectObject(lpnmCD -> hdc, GetStockObject(DC_BRUSH)); 
         SelectObject(lpnmCD -> hdc, GetStockObject(DC_PEN)); 
         RoundRect(lpnmCD -> hdc, lpnmCD -> rc.left + 3, lpnmCD -> rc.top + 3, 
         lpnmCD -> rc.right - 3, lpnmCD -> rc.bottom - 3, 5, 5); 
         return TRUE; 
       } 
      } 
     } 
    } 

ответ

2

Я думаю, вы должны нарисовать текст самостоятельно. Добавить этот код после RoundRect

// Unicode, adapt for ansi 
// ----------------------- 
wchar_t szBtnText[ 32 ] = { 0 }; 
GetWindowText(((LPNMHDR)lParam) -> hwndFrom, szBtnText, sizeof(szBtnText)/sizeof(wchar_t)); 
SetTextColor(lpnmCD -> hdc, RGB(255, 0, 0)); 
SetBkMode(lpnmCD -> hdc, TRANSPARENT); 
DrawText(lpnmCD -> hdc, szBtnText, wcslen(pszBtnText), &lpnmCD -> rc, 
     DT_CENTER | DT_SINGLELINE | DT_VCENTER); 
return CDRF_SKIPDEFAULT; 
+0

Получение ошибки: DrawTextW: не удается преобразовать параметр 2 из полукокса * до LPCWSTR – user3012804

+0

Да, извините, юникода/AnSi несоответствие в моем ответе. Обновлено. – manuell

+0

, какой файл заголовка используется для _tcslen? – user3012804

Смежные вопросы