//处理combobox的listbox的消息处理
case WM_LBUTTONDOWN:
        {
            CRect rc, rcColor;
            GetClientRect(hWnd, rc);
            CPoint pt;
            pt.x = LOWORD(lParam);
            pt.y = HIWORD(lParam);            if (PtInRect(rc, pt))
            {
                INT nItemHeight = SendMessage(hWnd, LB_GETITEMHEIGHT, 0, 0);
                INT nTopIndex   = SendMessage(hWnd, LB_GETTOPINDEX, 0, 0);                // Compute which index to check/uncheck
                INT nIndex = nTopIndex + pt.y / nItemHeight;                SendMessage(hWnd, LB_GETITEMRECT, nIndex, (LONG)(VOID *)&rc);                if (PtInRect(rc, pt))//每一个ITEM
                {
                    // Invalidate this window
                    InvalidateRect(hWnd, rc, FALSE);                    // Notify that selection has changed
                    m_pComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLong(m_pComboBox->m_hWnd, GWL_ID), CBN_SELCHANGE), (LPARAM)m_pComboBox->m_hWnd);
if (!m_pComboBox->IsHandleStyle(nIndex))
{
bCloseOnLButtonUp = true;
break;
}
                    // Was the click on the check box?
                    HDC hdc = GetDC(hWnd);
                    TEXTMETRIC metrics;
                    GetTextMetrics(hdc, &metrics);
                    ReleaseDC(hWnd, hdc);
                    rc.right = rc.left + metrics.tmHeight + metrics.tmExternalLeading + 6;
rcColor = rc;
rcColor.left = rcColor.right;
rcColor.right = rcColor.left + metrics.tmHeight + metrics.tmExternalLeading ;                    if (PtInRect(rc, pt))//checkbox
                    {
                        // Toggle the check state

                        m_pComboBox->SetCheck(nIndex, !m_pComboBox->GetCheck(nIndex));                        // Notify that check state has changed
                        m_pComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLong(m_pComboBox->m_hWnd, GWL_ID), BN_CLICKED), (LPARAM)m_pComboBox->m_hWnd);
                    }
                    else if(rcColor.PtInRect(pt))//颜色框位置
{
CColorDialog dlg;
if(dlg.DoModal() == IDOK)
{
m_pComboBox->SetColor(nIndex, dlg.GetColor());
m_pComboBox->GetParent()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLong(m_pComboBox->m_hWnd, GWL_ID), BN_CLICKED), (LPARAM)m_pComboBox->m_hWnd);
m_pComboBox->SetFocus();
// m_pComboBox->SendMessage(WM_COLOR, 0, dlg.GetColor());
}
}
else
                    {
                        bCloseOnLButtonUp = true;
                    }
                }
            }            // Do the default handling now
            break;
这个当我处理颜色选择之后,combobox中的editctrl是的内容不是刚才选中的ITEM,而且选择颜色之后,第一次单击combobox不能响应鼠标的,没有单击是没有反应的,第二次就好了啊