怎样改CStatic的背景和文字颜色? 使用CStatic动态生成的静态控件,怎么更改颜色啊。我想要文字底色和对话框背景色一样(背景色已经被我改了,响应OnPaint自己画的)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从CStatic派生一个新类,并响应WM_DRAWITEM消息,在里面绘制CStatic的底色 派生子类在onpaint()setbkcolor 如果你的的对话框 不是用图片作背景的话,我看还是把,静态框话为透明比较好。头文件 CBrush m_HollowBrush;初始化 VERIFY(m_HollowBrush.CreateStockObject(HOLLOW_BRUSH));HBRUSH CMYDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);/* switch(nCtlColor) { case CTLCOLOR_STATIC: TCHAR lpszClassName[255]; GetClassName(pWnd->m_hWnd, lpszClassName, 255); if(_tcscmp(lpszClassName, TRACKBAR_CLASS) == 0) return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); pDC->SetBkMode(TRANSPARENT); return HBRUSH(m_HollowBrush); default: break; }*/ return hbr;}如果 要改文字颜色的话,好像只有自画了如果你已经自画了静态框 只要在我想你应该是用 CDC:: pDC->TextOut 这样的函数写的吧,只要写的时候设置一下 pDC->SetBkMode(0);就可以使文字背景和静态框背影一一样了 派生一个新类,在ONPANIT()里,调用FillRect就可以了! 不明白,VERIFY(m_HollowBrush.CreateStockObject(HOLLOW_BRUSH));什么作用啊?OnCtlControl响应哪个消息呢? WM_CTLCOLOR你利用一个CDC 获得其区域,然后直接填颜色就可以了好象是 pDC->FillSolidRect(&rect)吧 HBRUSH CMYDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { switch(nCtlColor) { case CTLCOLOR_EDIT: //Edit control pDC->SetBkColor(m_clrEdit); pDC->SetTextColor(m_clrText); return m_BrushEdit; //自己定义的CBrush } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);} HBRUSH CMYDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { switch(nCtlColor) { case CTLCOLOR_STATIC: //静态控件 pDC->SetBkColor(m_clrStatic); pDC->SetTextColor(m_clrText); return m_BrushStatic; //自己定义的CBrush } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);} 可以了,响应WM_CTLCOLOR消息,用pDC->SetBkColor(RGB(...)); 判断对话框是否被激活 屏蔽真个系统的鼠标右键 API函数ReadFile怎么得到读得的内容? 请求帮助:JPEG2000+ROI 实现的源代码!! 在线等待,帮忙解决个窗体小问题~~ 如何应用矩阵????急!!!!!!! 如果实现CEDIT控件的自动换行? 请高手帮我看看一段程序代码,有关数据库并发操作的问题。 在哪里有网页中常用的ActiveX控件的说明或介绍? 调用循环中DrawText,rc纵坐标也是变的,但为什么总在同一个位置画出来 初学数据库编程的疑惑 大家请看连接oracle的语句有何错误?
setbkcolor
VERIFY(m_HollowBrush.CreateStockObject(HOLLOW_BRUSH));HBRUSH CMYDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
/* switch(nCtlColor)
{
case CTLCOLOR_STATIC:
TCHAR lpszClassName[255];
GetClassName(pWnd->m_hWnd, lpszClassName, 255);
if(_tcscmp(lpszClassName, TRACKBAR_CLASS) == 0)
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkMode(TRANSPARENT);
return HBRUSH(m_HollowBrush);
default:
break;
}*/
return hbr;
}如果 要改文字颜色的话,好像只有自画了如果你已经自画了静态框
只要在我想你应该是用 CDC:: pDC->TextOut 这样的函数写的吧,只要写的时候设置
一下 pDC->SetBkMode(0);就可以使文字背景和静态框背影一一样了
OnCtlControl响应哪个消息呢?
你利用一个CDC 获得其区域,然后直接填颜色就可以了好象是 pDC->FillSolidRect(&rect)吧
{
switch(nCtlColor)
{
case CTLCOLOR_EDIT: //Edit control
pDC->SetBkColor(m_clrEdit);
pDC->SetTextColor(m_clrText);
return m_BrushEdit; //自己定义的CBrush } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
{
switch(nCtlColor)
{
case CTLCOLOR_STATIC: //静态控件
pDC->SetBkColor(m_clrStatic);
pDC->SetTextColor(m_clrText);
return m_BrushStatic; //自己定义的CBrush } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}