2010-09-03 139 views
3

如何更改mfc中列表控件中的高亮顏色。 我在clistctrl中找不到任何api。 我有覆蓋NM_CUSTOMDRAW描述msdn ,但是當我點擊列表中的任何項目它顯示半藍色和半黑色 爲什麼藍色即將到來?如何更改mfc中列表控件中的高亮顏色

回答

4

您需要覆蓋NM_CUSTOMDRAW處理程序。檢查this sample

+0

感謝您的鏈接。 我試過這個,但是點擊列表控件時,它會以藍色突出顯示。會有什麼問題? – Suri 2010-09-03 06:25:51

+0

@ user323422,不能說沒有看到你的代碼。 – 2010-09-03 06:44:09

+0

@Kirill V. Lyadvinsky藍色是默認的高亮顏色? – Suri 2010-09-03 06:47:06

0

基於Kirill V. Lyadvinsky的回答,我設法改變了所選項目的顏色。

我的對話框類包含使用資源ID IDC_TEST_DEF_TREECTreeCtrl成員。
方法OnNMCustomdraw設置所選項目的顏色。消息處理程序註冊的消息映射是這樣的:

ON_NOTIFY(NM_CUSTOMDRAW, IDC_TEST_DEF_TREE, OnNMCustomdraw) 

的方法實現:

void CSelectTestDefinitionDlg::OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult) 
{ 
    LPNMLVCUSTOMDRAW lpLVCustomDraw = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR); 
    switch (lpLVCustomDraw->nmcd.dwDrawStage) 
    { 
    case CDDS_ITEMPREPAINT: 
    case CDDS_SUBITEM: 
     if (lpLVCustomDraw->nmcd.uItemState & CDIS_SELECTED) 
     { 
      // Your color definitions here: 
      lpLVCustomDraw->clrText = RGB(255, 255, 255); 
      lpLVCustomDraw->clrTextBk = RGB(0, 70, 60); 
     } 
     break; 

    default: 
     break; 
    } 

    *pResult = 0; 
    *pResult |= CDRF_NOTIFYPOSTPAINT; 
    *pResult |= CDRF_NOTIFYITEMDRAW; 
    *pResult |= CDRF_NOTIFYSUBITEMDRAW; 
} 
相關問題