如何解决CCombobox:如何在win32中下拉组合框样式时设置可编辑区域文本的文本颜色
我将 CComboBox
与 DropDown 样式一起使用,其中用户可以在编辑区域中输入数据,以防下拉选项中的预期选项不可用。
我正在尝试使用 OnCtlColor
设置可编辑区域中文本的颜色,但它将颜色设置为仅插入的下拉项目而不是可编辑区域。
HBrush CUserInfoDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
{
int iCtrlID;
HBrush hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
iCtrlID = pWnd->GetDlgCtrlID();
if (CTLCOLOR_STATIC == nCtlColor &&
(IDC_CMB_CITY == iCtrlID)
)
{
pDC->SetTextColor(RGB(255,0));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBrush) GetStockObject(WHITE_Brush);
}
if (CTLCOLOR_EDIT == nCtlColor &&
(IDC_CMB_CITY == iCtrlID)
)
{
pDC->SetTextColor(RGB(255,0));
pDC->SetBkMode(TRANSPARENT);
}
return hbr;
}
其中 IDC_CMB_CITY
是 CComboBox
控件的资源 ID。
解决方法
在评论的帮助下找到了答案:
HBRUSH CUserInfoDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
{
TCHAR szText[MAX_PATH];
HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
if (pWnd->m_hWnd == m_CityComboBoxInfo.hwndItem)
{
pDC->SetTextColor(RGB(255,0));
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH) GetStockObject(WHITE_BRUSH);
int iSel = m_Cmb_City.GetCurSel();
if (CB_ERR != iSel)
{
m_Cmb_City.GetLBText(iSel,szText);
if (0 != _tcsicmp(szText,L"some_default_text_initially_shown_on_Dropdown"))
{
pDC->SetTextColor(RGB(0,0));
}
}
}
}
哪里CComboBox m_Cmb_City;
和 m_CityComboBoxInfo
是使用 m_Cmb_City.GetComboBoxInfo(&m_CityComboBoxInfo);
获取的
上面的一段代码将文本颜色设置为最初的红色。当用户从菜单中进行选择时,它会将文本颜色更改为黑色
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。