![](/img/trans.png)
[英]How do I change the font of a specific item in a CListBox/CComboBox
[英]CComboBox - How to change the color of the static with Drop List Style
我想知道是否可以使用“ Drop List
样式在CCombobox
更改文本(和小箭头)的颜色和静态背景。
我的课是从CComboBox
派生的,我已经尝试过使用CtlColor
和OnCtlColor
函数,但是似乎没有什么可以改变ComboBox的颜色。
这是“删除列表”样式的控件的图片:
我想文字和改变箭头RGB(0, 255, 255)
和背景,以RGB(255,255,0)
这是我的函数CtlColor()
:
HBRUSH CColoredComboBox::CtlColor(CDC *pDC, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_STATIC || nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetBkColor(RGB(255,255,0));
pDC->SetTextColor(RGB(0, 255, 255));
}
return m_brBkgnd;
}
它适用于样式Dropdown,但不适用于Drop List。
谢谢。
不知道是否可以更改箭头颜色,但是可以更改组合框的颜色。 借助OnChildNotify()
函数,您可以检索子HDC
,然后可以更改特定的子HDC
。
/////////////////////////////////////////////////////////////////////////////
// CMyComboBox message handlers
BOOL CMyComboBox::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult)
{
// TODO: Add your specialized code here and/or call the base class
if(WM_CTLCOLOREDIT != message)
return CComboBox::OnChildNotify(message, wParam, lParam, pLResult);
HDC hdcChild = (HDC)wParam;
if(NULL != hdcChild)
{
SetBkMode(hdcChild, TRANSPARENT);
SetTextColor(hdcChild, RGB(255, 255, 0));
SetBkColor(hdcChild, RGB(255, 0, 0));
*pLResult = (LRESULT)(m_Brush.GetSafeHandle());
}
return TRUE;
// return CComboBox::OnChildNotify(message, wParam, lParam, pLResult);
}
结果:
有两种方法-简单和困难。 困难的方法是用ownerdraw完成DrawItem来处理所有情况。 一种简单的方法是在对话框资源中将两个组合放在另一个顶部,并隐藏不使用的组合。 也许这可以给您一些想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.