MFC怎样手动控制静态文本框背景颜色?

MFC怎样手动控制静态文本框背景颜色?而不是在生成对话框后,系统自动改变静态文本框的颜色。效果是这样的:用户点击按钮之后,静态文本框字体颜色才会改变。... MFC怎样手动控制静态文本框背景颜色? 而不是在生成对话框后,系统自动改变静态文本框的颜色。
效果是这样的:用户点击按钮之后,静态文本框字体颜色才会改变。
展开
 我来答
任明星Ming
2013-07-16 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1148万
展开全部
1. 在CEdit或者CStatic的父窗口中重载WM_CTLCOLORSTATIC消息。

2. 然后创建一个画刷,比如这个白色的画刷,注意该画刷必须是全局变量或者是类成员变量。不能是函数中的局部变量。
CBrush m_brEdit;
m_brEdit.CreateSolidBrush(RGB(255, 255, 255));

3. 最后在CTLCOLORSTATIC消息处理函数中返回画刷。
HDC hDC = (HDC)wParam;
HWND hWnd = (HWND)lParam;
SetBkMode(hDC,TRANSPARENT);
return (LRESULT)m_brEdit.m_hBrush;
追问
能详细点么?
怎样重载消息?
追答
请看微软的MSDN有关如何使用WM_CTLCOLORSTATIC的文章吧,点下面的链接:
http://msdn.microsoft.com/zh-cn/library/windows/desktop/bb787524(v=vs.85).aspx

这个有个Demo程序:

http://hi.baidu.com/xun1573/item/19a5349e354244de1e42716e
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-08-07
展开全部
HBRUSH CPurchaseManageDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
COLORREF backColor = RGB(216, 231, 252); //office 2003背景色
pDC->SetBkMode(TRANSPARENT); //设置控件背景透明

// 判断下是不是你要改的控件ID
if( pWnd->GetDlgCtrlID() == IDC_C_CPERSON || pWnd->GetDlgCtrlID() == IDC_C_APERSON )
{
pDC->SetBkColor(RGB(153, 255, 204));
}

return CreateSolidBrush(backColor); //创建背景刷子
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2013-07-17 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1327万
展开全部
点击后填充背景色就可以了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式