怎样改变一个窗体上所有按钮的颜色???

ddmpqcw 2002-07-25 06:00:10
在SDK方式怎样改变一个窗体上所有按钮的颜色?为什么
用WM_CTLCOLORBTN消息不行?
...全文
11 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddmpqcw 2002-07-26
我的消息循环如下:
LRESULT CALLBACK wndproc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam){
switch(msg){
...
case WM_CTLCOLORBTN
return (long)::CreateSolidBrush(RGB(222,222,222));
...
}
就是这样,但是颜色就是不会变。

回复
Panr 2002-07-25
在头文件中声明HBRUSH OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)
然后在MESSAGE_MAP 中添加一行ON_WM_CTLCOLOR()


HBRUSH CMyDlg::OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (!m_brushBackground)
{
CBrush brushTemp;

if (!brushTemp.CreateSolidBrush (m_clrTreeBackground))
return CDialog::OnCtlColor (pDC, pWnd, nCtlColor);

m_brushBackground = (HBRUSH)brushTemp.Detach ();
}

if (pWnd->IsKindOf (RUNTIME_CLASS(CEdit)))
{
pDC->SetTextColor (m_bGrayEditText? RGB(192,192,192) : RGB(0,0,0));
return NULL;
}

return m_brushBackground;
}
回复
shorrow 2002-07-25
把你的消息处理贴出来看看
回复
sans 2002-07-25
用WM_CTLCOLORBTN消息可以
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告