控件自绘代码实现

响应控件的NM_CUSTOMDRAW 事件,并实现如下自绘代码:

 

void CDBManageDlg::SelfDraw(NMHDR *pNMHDR,
       LRESULT *pResult,
       CListCtrl& ctrlList,
       COLORREF SelTextColor /* = RGBPUREWHITE */,
       COLORREF SelTextBkColor /* = RGBPUREBLUE */,
       COLORREF UnselTextColor /* = RGBPUREANTIRED */,
       COLORREF UnselTextBkColor /* = RGBPUREBLACK  */)
{
 LPNMLVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR); 

 LV_ITEM lvItem;
 SHORT shSelIndex = -1;
 CString strText;
 BOOL bSelLine = FALSE;
 lvItem.mask = LVIF_TEXT;
 int nRow = int(pNMCD->nmcd.dwItemSpec);
 POSITION POS = ctrlList.GetFirstSelectedItemPosition();
 while (POS)
 {
  shSelIndex = ctrlList.GetNextSelectedItem(POS);
  if (nRow == shSelIndex)
  {
   bSelLine = TRUE;
   break;
  }  
 }

 switch (pNMCD->nmcd.dwDrawStage)
 {
 case CDDS_PREPAINT:
  *pResult = CDRF_NOTIFYITEMDRAW;
  break;
 case CDDS_ITEMPREPAINT:  
  *pResult = CDRF_NOTIFYSUBITEMDRAW;
  break;
 case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
  if (bSelLine)
  {
   pNMCD->clrText = SelTextColor;
   pNMCD->clrTextBk = SelTextBkColor;
  }
  else
  {
   pNMCD->clrText = UnselTextColor;
   pNMCD->clrTextBk = UnselTextBkColor;   
  }
  *pResult = CDRF_NEWFONT;
  break;
 default:
  *pResult = 0;
  break;
 }
}

 

调用示例:

m_pView->SelfDraw(pNMHDR, pResult, m_ctrlTest, RGBPUREWHITE, RGBPUREBLUE, RGBPUREBLACK, RGBPUREWHITE);

<script type="text/javascript"></script>

<script type="text/javascript"></script>

<script type="text/javascript"> </script>

<script type="text/javascript"> </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值