UINT uiState = 0;
uiState = GetItemState(lpDrawItemStruct->itemID, LVIS_STATEIMAGEMASK);if(uiState & LIST_CHKBOX_CHKED)
{
pDC->DrawFrameControl(&rectChkBox, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_CHECKED);
}
else
{
pDC->DrawFrameControl(&rectChkBox, DFC_BUTTON, DFCS_BUTTONCHECK);
}

解决方案 »

  1.   


    新手请问一下LIST_CHKBOX_CHKED 和 rectChkBox是如何定义的啊?谢谢了
      

  2.   

    rectChkBox  -> CheckedBox描画的位置在鼠标左键点击到rectChkBox时, 设置Check状态。设置Check状态:#define LIST_CHKBOX_CHKMASK (~(3 << 12))
    #define LIST_CHKBOX_UNCHKED (1 << 12)
    #define LIST_CHKBOX_CHKED (1 << 13)void CListCtrlEx::SetItemChk(int iItem, BOOL bChk)
    {
    UINT uiState = 0;
    uiState = GetItemState(iItem, LVIS_STATEIMAGEMASK); if(bChk)
    {
    uiState &= LIST_CHKBOX_CHKMASK;
    SetItemState(iItem, uiState | LIST_CHKBOX_CHKED, LVIS_STATEIMAGEMASK);
    }
    else
    {
    uiState &= LIST_CHKBOX_CHKMASK;
    SetItemState(iItem, uiState |LIST_CHKBOX_UNCHKED, LVIS_STATEIMAGEMASK);
    }
    }
      

  3.   

    要自绘就直接CWnd派生
    干嘛要CListCtrl派生