求助:如何在对话框刚开始显示,把Static控件的背景色由灰变成白色 求助:如何在对话框刚开始显示,把Static控件的背景色由灰变成白色,也就是说,在对话框显示时,其Static的控件已经是白色的了,这个问题困扰我了一段时间,望高手给予解答 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先是设置颜色,并在cdialog的onpaint中执行对cstatic控件绘制颜色即可。相关代码如下。。OnPaint(){// CWnd* pwnd = GetDlgItem(IDC_STCBKCOL); PaintBlock(pwnd,m_colTxtBkCol,FALSE); }void PaintBlock(CWnd * wnd,COLORREF color,BOOL bInvalid){ if(bInvalid) { wnd->InvalidateRect(NULL); wnd->UpdateWindow(); } PaintWndBlock(wnd,color);} //刚才漏了一个函数,现在补上void PaintWndBlock(CWnd * wnd,COLORREF color){ CRect rect; CPen pen; CBrush brush; CClientDC dc(wnd); wnd->GetClientRect(&rect); brush.CreateSolidBrush(color); pen.CreatePen(PS_SOLID,0,RGB(0,0,0)); CPen *oldpen = dc.SelectObject(&pen); CBrush * oldbrush = dc.SelectObject(&brush); dc.Rectangle(&rect); dc.SelectObject(oldpen); dc.SelectObject(oldbrush); if (!pen.DeleteObject()) { TRACE("删除笔失败!"); } if (!brush.DeleteObject()) { TRACE("删除刷失败!"); }} 另外,CDialog::OnPaint();不能没有,否则对话框上的控件,在下次显示时都没有了 想学习一下UI编程,大家给指个学习的路线,推荐些书籍,谢谢改为啦! Win 32 API 如何设置文本框为不可输入 析构函数问题 对话框获取Document指针出错 高分请教一个树控件异步刷新状态问题 这样声明怎么会错? 单文档程序的登入问题 MFC 对文件操作 有关C/S系统多用户同时访问操作数据库系统的设计实现问题!肯请大家赐教!! ATL编写ACTIVEX控件 dns域名服务 CFileFind的小问题
相关代码如下。。OnPaint()
{
//
CWnd* pwnd = GetDlgItem(IDC_STCBKCOL);
PaintBlock(pwnd,m_colTxtBkCol,FALSE);
}void PaintBlock(CWnd * wnd,COLORREF color,BOOL bInvalid)
{
if(bInvalid)
{
wnd->InvalidateRect(NULL);
wnd->UpdateWindow();
}
PaintWndBlock(wnd,color);
}
void PaintWndBlock(CWnd * wnd,COLORREF color)
{
CRect rect;
CPen pen;
CBrush brush;
CClientDC dc(wnd); wnd->GetClientRect(&rect);
brush.CreateSolidBrush(color);
pen.CreatePen(PS_SOLID,0,RGB(0,0,0));
CPen *oldpen = dc.SelectObject(&pen);
CBrush * oldbrush = dc.SelectObject(&brush);
dc.Rectangle(&rect);
dc.SelectObject(oldpen);
dc.SelectObject(oldbrush); if (!pen.DeleteObject())
{
TRACE("删除笔失败!");
}
if (!brush.DeleteObject())
{
TRACE("删除刷失败!");
}}