//在工具栏添加组合框
m_myBar.m_combobox.Create(
WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWN|CBS_OWNERDRAWFIXED,
cmbRect,&m_myBar,ID_ZERO_ITEM
)
//colorItems数组存储颜色值,
DWORD colorItems[] = {
0x00CBC0FF, 0x0000FFFF, 0x00000000, 0x00008000,
0x00FF0000, 0x00808080, 0x00A9A9A9, 0x00FFFF00,
0x000000FF, 0x00FFFFFF, 0x00D3D3D3, 0x00FF00FF,0x0000A5FF};
//想实现的效果是组合框的每一项用某一颜色值填充
void COwnComboBox::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
// TODO: Add your message handler code here and/or call default
CDC dc;
dc.Attach(lpDIS->hDC);
if ((lpDIS->itemState & ODS_SELECTED)
&& (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
CBrush clrBsh;
clrBsh.CreateSolidBrush(colorItems[lpDIS->itemID]);
dc.FillRect(&lpDIS->rcItem,&clrBsh);
clrBsh.DeleteObject();
}
else{
// De-Selected
// if (!(lpDIS->itemState & ODS_SELECTED)
// && (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE))) {
CBrush clrBsh;
clrBsh.CreateSolidBrush(colorItems[lpDIS->itemID]);
dc.FillRect(&lpDIS->rcItem,&clrBsh);
clrBsh.DeleteObject();
}
// Focus
if (lpDIS->itemAction & ODA_FOCUS) {
dc.DrawFocusRect(&lpDIS->rcItem);
}
Invalidate(true);
/* CComboBox::OnDrawItem(nIDCtl, lpDIS);*/
}
调试时发现每一项都有绘制,
可是只看到第一项绘制的效果,其他项都没看到绘制效果,知不知道哪里出错了?
m_myBar.m_combobox.Create(
WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWN|CBS_OWNERDRAWFIXED,
cmbRect,&m_myBar,ID_ZERO_ITEM
)
//colorItems数组存储颜色值,
DWORD colorItems[] = {
0x00CBC0FF, 0x0000FFFF, 0x00000000, 0x00008000,
0x00FF0000, 0x00808080, 0x00A9A9A9, 0x00FFFF00,
0x000000FF, 0x00FFFFFF, 0x00D3D3D3, 0x00FF00FF,0x0000A5FF};
//想实现的效果是组合框的每一项用某一颜色值填充
void COwnComboBox::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
// TODO: Add your message handler code here and/or call default
CDC dc;
dc.Attach(lpDIS->hDC);
if ((lpDIS->itemState & ODS_SELECTED)
&& (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
CBrush clrBsh;
clrBsh.CreateSolidBrush(colorItems[lpDIS->itemID]);
dc.FillRect(&lpDIS->rcItem,&clrBsh);
clrBsh.DeleteObject();
}
else{
// De-Selected
// if (!(lpDIS->itemState & ODS_SELECTED)
// && (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE))) {
CBrush clrBsh;
clrBsh.CreateSolidBrush(colorItems[lpDIS->itemID]);
dc.FillRect(&lpDIS->rcItem,&clrBsh);
clrBsh.DeleteObject();
}
// Focus
if (lpDIS->itemAction & ODA_FOCUS) {
dc.DrawFocusRect(&lpDIS->rcItem);
}
Invalidate(true);
/* CComboBox::OnDrawItem(nIDCtl, lpDIS);*/
}
调试时发现每一项都有绘制,
可是只看到第一项绘制的效果,其他项都没看到绘制效果,知不知道哪里出错了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货