vc 设置编辑框的颜色???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc 设置编辑框的颜色???相关的知识,希望对你有一定的参考价值。
现在有两个文本编辑框
ID号为IDC_NUM1 , IDC_NUM2
关联的变量是m_num1 , m_num2 。变量类型为 Cstring
我想让
当m_num1为“pass”时 这个编辑框的颜色为绿色,为“fail”时编辑框的颜色为红色
m_num2也是一样的
谁能帮帮我啊
写些代码什么的
帮帮我啊
HBRUSH CDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_EDIT)
LONG wndID=::GetWindowLong(pWnd->GetSafeHwnd(),GWL_ID);//获取窗口ID if(wndID==IDC_NUM1) CString EditBoxTxt; pWnd->GetWindowText(EditBoxTxt); if(EditBoxTxt==“pass") pDC->SetBkMode(TRANSPARENT);//设置文字背景透明(注意区分文字背景和窗口背景)
pDC->SetBkColor(BkColor); //设置文字背景,如果设置文字背景透明则这一句不起作用
pWnd->GetClientRect(rcClientRect);
CBrush br1(BkColor);//这里BkColor就是编辑框背景色,我在别的地方定义了BkColor并设置这
//个值
pDC->FillRect(rcClientRect,&br1);//通过填充的方式改变编辑框背景色
// TODO: Return a different brush if the default is not desired
return hbr;
追问
HBRUSH CDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
这个写
在哪里呢??
这是对话框的消息函数,按照添加对话框消息函数的方法添加就是了。
追问我添加了wm_color后
我的程序原来对的地方报错是怎么回事啊??
我是一个关于串口通信的程序,对串口上接收缓存有东西的话是实时接收的
加了之后下面这段报错
BEGIN_EVENTSINK_MAP(CMmDlg, CDialog)
//AFX_EVENTSINK_MAP(CComaDlg)
ON_EVENT(CMmDlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnComm, VTS_NONE)
//AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
怎么可能,你是用向导添加的吗?向导添加不可能有问题的。
追问我的串口通信的这段代码
BEGIN_EVENTSINK_MAP(CMmDlg, CDialog)
//AFX_EVENTSINK_MAP(CComaDlg)
ON_EVENT(CMmDlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnComm, VTS_NONE)
//AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
是手工添加的
你既然添加了,为什么没有看见消息映射,而且应该加的是WM_CTLCOLOR消息消息响应函数,用向导添加,不用手动添加
追问WM_CTLCOLOR我是想到添加的
我串口通信的这段代码
是手工添加的
我添加后会有消息映射如下:
BEGIN_MESSAGE_MAP(CDlgDlg, CDialog)
//AFX_MSG_MAP(CDlgDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_SelColor, OnSelColor)
//AFX_MSG_MAP
END_MESSAGE_MAP()
其中 ON_WM_CTLCOLOR()就是我用向导添加的消息映射
可你的没有呀
也是有的啊
我那个报错的是串口通信的 事件
这是两个不相干的事情呀,用向导添加一个消息函数怎么会影响到串口部分?
参考技术A 添加OnCtlColor方法,大体实现:HBRUSH CDLLinjectDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
//HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
HBRUSH m_brMine;
m_brMine = ::CreateSolidBrush(RGB(0,0,0));
// TODO: Change any attributes of the DC here
if (nCtlColor==CTLCOLOR_EDIT&&m_m_num1==“pass”)
pDC->SetBkColor(RGB(0,0,0));//背景颜色值
pDC->SetTextColor(RGB(255,0,0));//文本颜色值
pDC->SetBkMode(TRANSPARENT);
return m_brMine;
// TODO: Return a different brush if the default is not desired
return m_brMine;
如果不能实时变,估计还得用定时器,你先试试吧,不行再Hi我追问
我hi你了~
追答什么问题?不行吗?
以上是关于vc 设置编辑框的颜色???的主要内容,如果未能解决你的问题,请参考以下文章