如何在Static控件中显示文本,并改变背景颜色!同时还要让文本能在控件中显示出来比较规范一些!
解决方案 »
- 如何调用IHTMLElement相关事件的函数?如onkeydown的函数
- 请问20几K的数据有没有必要使用缓存,多次接收呢?
- 如何使标题栏上的"X"按钮,变灰?能看到,但是不能按(disable)?
- VS2005中的组件
- 使用uskin换肤,用debug版本没问题,但是在release版本中却出现提示错误:
- 高手和版主帮解决一下用CreatePipe()建立管道时的问题
- 求MFC深入浅出的源代码!!~~~
- 隐藏CWebBrowser2控件的滚动条如何做啊???
- 请问怎么样写才能取得点击另一个窗体的按钮?帮助!!
- 关于文本内容获取的问题。
- MFC中的错误,急求解答
- 未发现数据源名称并且未指定默认驱动程序
CDC* pdc=pwnd->GetDC();
CBrush pbrush;
pbrush.CreateSolidBrush(RGB(255,0,0));//创建一个画刷(红色)
pdc->SelectObject(&pbrush);
CRect rect;
pwnd->GetClientRect(rect);
pdc->FillRect(&rect,&pbrush); //用画刷画背景
SetDlgItemText(IDC_DRAW,"哈哈");
// 或者用下面
//pwnd->SetWindowText("哈哈");
{
// TODO: Add your control notification handler code here
CWnd *pWnd=GetDlgItem(IDC_STATIC);
CDC *pDc=pWnd->GetDC();
CBrush pBrush;
pBrush.CreateSolidBrush(RGB(255,0,0));
pDc->SelectObject(&pBrush);
CRect rect;
pWnd->GetClientRect(rect);
pDc->FillRect(&rect,&pBrush);
pWnd->SetWindowText("红色");
}
关键在"if (nCtlColor == CTLCOLOR_STATIC)",
CView和CDialog的处理一样
如果只处理颜色,这种方法应该是最简便的,但是不够灵活
太复杂的,还是重写CStaticHBRUSH CCustomDrawDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(m_crBK);
pDC->SetTextColor(m_crText);
}
return (HBRUSH)m_pBrush->m_hObject;
}
我在vc中试过的,调试通过。你再试试吧
==============================
雨中竹
等 级:
发表于:2007-11-19 12:38:003楼 得分:0
请问楼上的我照着你的代码打完了为什么没看到IDC_STATIC的背景色改变呢?