MFC怎样手动控制静态文本框背景颜色?
MFC怎样手动控制静态文本框背景颜色?而不是在生成对话框后,系统自动改变静态文本框的颜色。效果是这样的:用户点击按钮之后,静态文本框字体颜色才会改变。...
MFC怎样手动控制静态文本框背景颜色? 而不是在生成对话框后,系统自动改变静态文本框的颜色。
效果是这样的:用户点击按钮之后,静态文本框字体颜色才会改变。 展开
效果是这样的:用户点击按钮之后,静态文本框字体颜色才会改变。 展开
3个回答
展开全部
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;
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); //创建背景刷子
}
{
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); //创建背景刷子
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
点击后填充背景色就可以了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询