當前位置:編程學習大全網 - 源碼下載 - 怎麽在clistctrl 裏面加 button最好有源碼?

怎麽在clistctrl 裏面加 button最好有源碼?

首先妳要從CListCtrl繼承壹個類,實現NM_CUSTOMDRAW消息或者重載DrawItem()函數。

加控件Button可以在響應NM_CUSTOMDRAW自繪消息時new出來,但是這樣會比較慢,而且無法消除閃爍效果。

最好是自繪壹個圖片做出button的效果來,在NM_CUSTOMDRAW響應函數判斷消息類型是CDDS_ITEMPREPAINT或者CDDS_ITEMPREPAINT是畫壹張圖片上去,並響應

ON_WM_MOUSEMOVE(),ON_WM_MOUSELEAVE(),ON_WM_LBUTTONDOWN(),ON_WM_LBUTTONUP()等消息動態繪制效果。如

BEGIN_MESSAGE_MAP()

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CXXXList::OnNMCustomdraw)

ON_WM_MOUSEMOVE()

ON_WM_MOUSELEAVE()

ON_WM_LBUTTONDOWN()

ON_WM_LBUTTONUP()

END_MESSAGE_MAP()

void CXXXList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)

{

NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );

*pResult = CDRF_DODEFAULT;

switch (pLVCD->nmcd.dwDrawStage)

{

case CDDS_ITEMPREPAINT:

*pResult = ItemPrePaint(pLVCD);

break;

case CDDS_SUBITEM | CDDS_ITEMPREPAINT:

*pResult = SubItemPrePaint(pLVCD);

break;

default:

break;

}

}

DWORD CXXXList::SubItemPrePaint(NMLVCUSTOMDRAW* pLVCD)

{

//畫圖片

CDC* pDc = CDC::FromHandle(pLVCD->nmcd.hdc);

return CDRF_NOTIFYPOSTPAINT;

}

  • 上一篇:在成都有哪些世界500強企業
  • 下一篇:dubbo有哪些負載均衡算法?怎麽實現的負載均衡算法?dubbo有幾層
  • copyright 2024編程學習大全網