gpt4 book ai didi

visual-c++ - 如何在 mfc 中更改静态文本控件的背景颜色(当按下按钮或在计时器中时)?

转载 作者:行者123 更新时间:2023-12-04 03:59:19 31 4
gpt4 key购买 nike

我知道它可以用 OnCtlColor() 来完成,但是当加载表单时它会改变颜色并且要绘制静态文本,我想在加载表单后执行它,也许有一个计时器,我搜索了一个解决方案但我没有找到明确的,这是我写的:

void CTabFive::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
CWnd* pWnd = this->GetDlgItem(IDC_Chromosome1);
CDC* dc = pWnd->GetDC();
dc->SetBkColor(RGB(200,0,0));
pWnd->Invalidate();
pWnd->UpdateWindow();
Invalidate();
UpdateWindow();
//flag = true;
}

最佳答案

不需要计时器。在这里,我有一个初始化为 false 的类的 bool m_coloured 成员,并在按钮按下时切换。 OnCtlColor 将根据 m_coloured 的值以红色或系统颜色绘制。很好用。

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

if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == IDC_LABEL)
{
DWORD d = GetSysColor(COLOR_BTNFACE);

COLORREF normal = RGB(GetRValue(d), GetGValue(d), GetBValue(d));
COLORREF red = RGB(255, 0, 0);

pDC->SetBkColor(m_coloured ? red : normal);

}
return hbr;
}


void Cmfcvs2010Dlg::OnBnClickedButton1()
{
m_coloured = !m_coloured;
Invalidate();
}

关于visual-c++ - 如何在 mfc 中更改静态文本控件的背景颜色(当按下按钮或在计时器中时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006168/

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