Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo agregar un botón en clistctrl mediante el código fuente?

¿Cómo agregar un botón en clistctrl mediante el código fuente?

Primero, debe heredar una clase de CListCtrl que implemente el mensaje NM_CUSTOMDRAW o sobrecargue la función DrawItem().

Puedes agregar un nuevo botón de control en respuesta al mensaje de autodibujado NM_CUSTOMDRAW, pero esto será más lento y no podrá eliminar el efecto de parpadeo.

Es mejor hacer un dibujo para crear el efecto del botón. En la función de respuesta NM_CUSTOMDRAW, determine si el tipo de mensaje es CDDS_ITEMPREPAINT o CDDS_ITEMPREPAINT, que consiste en hacer un dibujo y responder.

ON_WM_MOUSEMOVE(), ON_WM_MOUSEMOVE(), WM_MOUSELEAVE(), ON_WM_LBUTTONDOWN(), ON_WM_LBUTTONUP() y otros mensajes de efectos de dibujo dinámico. Por ejemplo

BEGIN_MESSAGE_MAP()

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, amp;CXXXList::OnNMCustomdraw)

ON_WM_MOUSEMOVE()

ON_ WM_MOUSELEAVE( )

ON_WM_LBUTTONDOWN()

ON_WM_LBUTTONUP()

END_MESSAGE_MAP()

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

{

NMLVCUSTOMDRAW* pLVCD = reinterpret_castlt;NMLVCUSTOMDRAW*gt;(pNMHDR);

*pResultado = CDRF_ DODEFAULT;

cambiar (pLVCD-gt; nmcd.dwDrawStage)

{

caso CDDS_ITEMPREPAINT:

*pResult = ItemPrePaint(pLVCD);

descanso;

caso CDDS_SUBITEM | CDDS_ITEMPREPAINT:

*pResult = SubItemPrePaint(pLVCD);

descanso;

predeterminado:

descanso; {

//pintando imagen

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

devolver CDRF_NOTIFYPOSTPAINT;

}

.