gpt4 book ai didi

c++ - 更改只读 CEdit 控件的颜色工件和文本突出显示问题

转载 作者:行者123 更新时间:2023-11-30 02:53:52 29 4
gpt4 key购买 nike

我有一个只读的编辑控件,其中包含文本。我想将默认的灰色背景切换为白色,但运气有限。在我的第一次尝试中,我在对话框初始化期间执行了以下代码:

CEdit *m_ctrlEditOne = (CEdit*) GetDlgItem(IDC_EDIT1);
CDC *m_ctrlEEditWee = m_ctrlEditOne->GetDC();
m_ctrlEEditWee->SetBkColor(RGB(255,0,0));
Invalidate(true);

我尝试的另一个解决方案是:

HBRUSH CTestingDlg::OnCtlColor(CDC* pDC, CWnd *pWnd, UINT nCtlColor)
{
if (pWnd->GetStyle() & ES_READONLY)
//if(pDC->GetRuntimeClass == & ES_READONLY)
{
switch (nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB(255,255,255));
return (HBRUSH)GetStockObject(NULL_BRUSH);
default:
//return NULL;
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
}
//return NULL;
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

在下面的屏幕截图中,您可以看到文本是在事后插入的(这是需要发生的)并以蓝色突出显示 - 我不知道从哪里开始如何让它正常显示,非突出显示的文本。单击它时,它显示正常。在每个编辑控件的左下角,可以看到一个不应该出现在那里的正方形。此外,您还可以在较大的框中看到一些看起来像是组合框下拉选择的伪像。

enter image description here

我将不胜感激有关如何消除伪影并修复插入文本的突出显示问题的任何指示。

最佳答案

我做如下所示。它会将只读编辑控件 IDC_EDIT1 的背景更改为白色。这是直接从我的一个项目中复制粘贴的。

m_whitebrush 是 HBRUSH 类型的 CTestOnCtlClorDlg 的私有(private)成员,必须在 CTestOnCtlClorDlg 的构造函数中初始化为 NULL。

HBRUSH CTestOnCtlClorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

int id = pWnd->GetDlgCtrlID( ) ;

if (id == IDC_EDIT1)
{
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(255,255,255));

if (!m_whitebrush)
m_whitebrush = CreateSolidBrush(RGB(255,255,255)) ;

hbr = m_whitebrush ;
}

return hbr;
}

void CTestOnCtlClorDlg::OnDestroy()
{
CDialog::OnDestroy();

if (m_whitebrush !=NULL)
{
DeleteObject(m_whitebrush) ;
m_whitebrush = NULL ;
}
}

关于c++ - 更改只读 CEdit 控件的颜色工件和文本突出显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579066/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com