读书人

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

发布时间: 2013-01-07 10:02:24 作者: rapoo

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 是父窗口反射(还)给子窗口的消息 。就是叫 子窗口 自己 处理

读书人网 >VC/MFC

热点推荐