请问如何为某一个Edit设置背景颜色啊 我只知道Onctcolor可以改变Edit背景色,但是好像是改变所有的,我现在想改某一个IDC_EDIT1的背景色,该怎么做呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (pWnd->GetDlgCtrlID()==IDC_EDIT1){改变Edit背景色} you can do it by overiding the OnPaint function.change the Edit's brush sorry,overwrite the function 同意cheng_young(古道西风瘦马) ( 所说:HBRUSH CMyDlg::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) { if( pWnd->GetSafeHwnd() == GetDlgItem(IDC_EDIT1)->GetSafeHwnd() ) pDC->SetTextColor(RGB(255,0,0));//red } pDC->SetBkColor(RGB(255,192,203));...} cheng_young(古道西风瘦马) 我试过你的方法了,如果第一个EditID号相符他就把所有的Edit颜色都改了,如果第一个EditID号不相符,所有的Edit颜色都不改变好像他只判断第一个,其他都不判断,怎么办呢, HBRUSH CDlg::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_LISTBOX) { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(233,233,220)); HBRUSH b=CreateSolidBrush(RGB(233,233,220)); return b; } else if(nCtlColor==CTLCOLOR_SCROLLBAR) { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(233,233,220)); HBRUSH b=CreateSolidBrush(RGB(233,233,220)); return b; } else if(nCtlColor==CTLCOLOR_EDIT) { //pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(233,233,220)); HBRUSH b=CreateSolidBrush(RGB(233,233,220)); return b; } else if(nCtlColor==CTLCOLOR_STATIC) { pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(160,180,220)); HBRUSH b=CreateSolidBrush(RGB(160,180,220)); return b; } else if(nCtlColor==CTLCOLOR_DLG) { pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(160,180,220)); HBRUSH b=CreateSolidBrush(RGB(160,180,220)); return b; } // TODO: Return a different brush if the default is not desired return hbr;} NewFree(新自由人) 呵呵,NewFree的代码成功了,谢谢,也谢谢cheng_young(古道西风瘦马) USB手柄如何用hid震动 B程序是没有Title 的对话框程序,B程序要如何做,才能让A程序 找到自已? vc里消息与事件有什么区别? 请教高手,类似于金山词霸“每日一帖”的代码应该放在程序的什么位置启动? 为什么VC的标签工具(Bookmarks)不好用了? 关于Access删除后数据库文件变大问题,求教高手 Com问题,hr返回值总是0x8002801d 没有注册,高手们快来!! vc++和c++ builder 比较 如何使得MDI子窗口打开时保持最大化? 请问如何对注册表中键值为二进制的......help_me! Class Wizard 的错误提示! 如何捕获组合快捷键?
{
改变Edit背景色
}
change the Edit's brush
HBRUSH CMyDlg::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)
{
if( pWnd->GetSafeHwnd() == GetDlgItem(IDC_EDIT1)->GetSafeHwnd() )
pDC->SetTextColor(RGB(255,0,0));//red
}
pDC->SetBkColor(RGB(255,192,203));...
}
我试过你的方法了,
如果第一个EditID号相符
他就把所有的Edit颜色都改了,
如果第一个EditID号不相符,
所有的Edit颜色都不改变
好像他只判断第一个,其他都不判断,
怎么办呢,
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_LISTBOX)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(160,180,220));
HBRUSH b=CreateSolidBrush(RGB(160,180,220));
return b;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
呵呵,NewFree的代码成功了,
谢谢,也谢谢cheng_young(古道西风瘦马)