¿Cómo agregar un botón en clistctrl mediante el código fuente?
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: p >
descanso; {
//pintando imagen
CDC* pDc = CDC::FromHandle(pLVCD -gt; nmcd.hdc);
devolver CDRF_NOTIFYPOSTPAINT;
}
.