VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]

分类: 正规的365网站平台 时间: 2025-08-09 21:58:48 作者: admin 阅读: 351

在MFC中设置控件的背景色、字体、字体颜色、标题等属性主要是利用OnCtlColor函数来实现。

如:

HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

//设置静态控件的背景色和文本颜色

if (pWnd->GetDlgCtrlID() == IDC_STATIC_SHOW_MSG)

{

pWnd->SetWindowText("123");

pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(RGB(0,0,0));

//m_hStaticBkColor是CBrush类类型的变量,要在构造函数中初始化为指定的颜色

hbr = m_hStaticBkColor;

}

// TODO: Return a different brush if the default is not desired

return hbr;

}

注意在OnCtlColor函数中:

控件的标题、字体通过CWnd类的SetWindowText和SetFont函数来设置。

控件的背景色通过添加一个CBrush类类型的画刷来设置,控件的字体背景色、字体颜色通过CDC类的SetBkMode、SetBkColor和SetTextColor函数来设置。此外,不要在OnCtlColor函数中调用CDC类的TextOut函数,如果调用了SetBkMode(TRANSPARENT)再去调用SetBkColor就没有作用了(没有先后顺序,SetBkMode(TRANSPARENT)可以在随意的位置)。

此外,我们有时会在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。

但是在OnPaint函数中设置控件的字体颜色(即SetBkMode和SetTextColor)只能在TextOut函数中有效,在SetWindowText函数中是无效的。TextOut函数一般在OnPaint函数中调用的,并且可以通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。当然SetWindowText也可以在OnPaint函数中调用,只不过就不能在OnPaint函数中通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。

因此,改变控件的外观属性主要是在OnCtlColor函数中实现,当然还要据实际情况,有可能在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。此外,如果要改变控件背景色,除了在OnCtlColor中利用CBrush类类型的画刷来设置外,还可以利用CDC类型的FillSolidRect函数在合适的函数中来设置。至于字体的设置,据实际情况在合适的函数中设置,如果要用到TextOut的,就在OnPaint函数中调用吧。

转自:http://blog.sina.com.cn/s/blog_6230f1a30100wc21.html

相关文章

卧龙吟怎么结婚 结婚条件亲密度如何提高

365投注入口 · 07-14 阅读 5278

梦幻西游年卡多少钱?购买渠道和优惠信息!

365流水不足无法提款 · 07-06 阅读 2391

AI预测工具合集

正规的365网站平台 · 08-02 阅读 5226