首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC6 CStatic 设立文字颜色没有作用

2013-01-07 
VC6 CStatic 设置文字颜色没有作用帮忙看下为啥不对只有2个要求 透明、文字颜色可变另附一个问题OnCtlColor

VC6 CStatic 设置文字颜色没有作用
帮忙看下为啥不对
只有2个要求 透明、文字颜色可变
另附一个问题OnCtlColor这个函数为啥进不来,而CtlColor是可以进去


已加消息
ON_WM_CTLCOLOR()
ON_WM_CTLCOLOR_REFLECT()
ON_WM_ERASEBKGND()


HBRUSH CMulitStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
{
CString str;
GetWindowText(str);
TRACE("%s\n", str);//有文字的
pDC->SetTextColor(RGB(255,0, 255));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}

//OnCtlColor这个函数进不来
HBRUSH CMulitStatic::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CStatic::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetTextColor(RGB(255, 0, 255));
return hbr;
}


void CMulitStatic::PreSubclassWindow() 
{
    DWORD dwStyle = GetStyle();  
 //   SetWindowLong(GetSafeHwnd(),/*GWL_STYLE*/SS_NOTIFY,dwStyle | SS_OWNERDRAW  ); 
ModifyStyle(0, dwStyle| SS_NOTIFY| SS_OWNERDRAW);
CStatic::PreSubclassWindow();
}

[解决办法]
HBRUSH CMulitStatic::CtlColor(CDC* pDC, UINT nCtlColor)  {     CString str;     GetWindowText(str);     TRACE("%s\n", str);//有文字的     pDC->SetTextColor(RGB(255,0, 255));     pDC->SetBkMode(TRANSPARENT);     return (HBRUSH)GetStockObject(NULL_BRUSH); } 
在这个函数里建立一个画刷,然后返回这个画刷
[解决办法]
你响应的是=WM_CTLCOLOR消息吗?注意前面有个=符号
[解决办法]
我遇到过类似的情况,后来把文本框属性名字ID_STATIC后面加了个_1,就没问题了,不知道为什么,可以尝试一下,仅供参考。
[解决办法]
1, OnCtlColor 是子窗口反射给父窗口的消息
[解决办法]
1,OnCtlColor 是子窗口给父窗口的消息 。
2,CtlColor    是父窗口反射(还)给子窗口的消息 。就是叫 子窗口 自己 处理

热点排行