请问:
如何让Edit控件不能输入同时不改变它的背景色?
我已经在网上搜索到一些资料,响应WM_CTLCOLOR,并且写代码:
HBRUSH CInputEdit::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
if (pWnd->GetDlgCtrlID()==IDC_Edit)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(255,255,255));
static CBrush m_brushEdit(RGB(255,255,255));
hbr = m_brushEdit;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
但是,只要Edit控件的属性设为ReadOnly,这些设置无效,总是灰色。
另外,我尝试过响应=WM_CTLCOLOR消息,写函数:
HBRUSH CInputEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何属性
HBRUSH hbr;
CBrush Brush;
if(nCtlColor==CTLCOLOR_EDIT)
{
Brush.CreateSolidBrush(RGB(255,255,255));
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(255,255,255));
hbr=(HBRUSH)(Brush.GetSafeHandle());
return hbr;
}
// TODO: 如果不应调用父级的处理程序,则返回非空画笔
return NULL;
}
同样都不行。
请问,应该怎么做?
我是不是缺少了一些步骤?
如何让Edit控件不能输入同时不改变它的背景色?
我已经在网上搜索到一些资料,响应WM_CTLCOLOR,并且写代码:
HBRUSH CInputEdit::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
if (pWnd->GetDlgCtrlID()==IDC_Edit)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(255,255,255));
static CBrush m_brushEdit(RGB(255,255,255));
hbr = m_brushEdit;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
但是,只要Edit控件的属性设为ReadOnly,这些设置无效,总是灰色。
另外,我尝试过响应=WM_CTLCOLOR消息,写函数:
HBRUSH CInputEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何属性
HBRUSH hbr;
CBrush Brush;
if(nCtlColor==CTLCOLOR_EDIT)
{
Brush.CreateSolidBrush(RGB(255,255,255));
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(255,255,255));
hbr=(HBRUSH)(Brush.GetSafeHandle());
return hbr;
}
// TODO: 如果不应调用父级的处理程序,则返回非空画笔
return NULL;
}
同样都不行。
请问,应该怎么做?
我是不是缺少了一些步骤?
解决方案 »
- 读文件
- 关于MFC删除文本文件指定字符串的问题,求真正高手不厌其烦,热心指教
- 怎样在我的程序中弹出“打开方式”对话框?
- 关于XML转换成word的问题
- opengl中函数glColorMaterial()的用法
- raw socket能直接以填充mac地址的方式发送数据吗?
- 谁教偶用DECIMAL变量?在线等。。。
- 问题?
- 为什么我在vc中用CRecordSet打开数据库,会出现数据截取错误?
- 实在没办法了,我的MSN无法登录,急着用啊,在线等待,各位大侠,帮忙!
- 在DLL中实现SetWindowsHookEx的问题,我不想再有第二个DLL了
- 怎么从 CreateFile 所创建的 HANDLE 中获取 lpFileName?
m_clrBkgnd = 某些颜色;
m_brBkgnd.CreateSolidBrush( m_clrBkgnd );
m_clrText = 某些颜色;
m_clrBkgnd = 某些颜色; m_clrDisableText = 某些颜色;
m_clrDisableBkgnd = 某些颜色;
HBRUSH CustEdit::CtlColor( CDC* pDC, UINT /*nCtlColor*/ )
{
if ( this->IsWindowEnabled() )
{
// Text
pDC->SetTextColor( m_clrText );
// Text bkgnd
pDC->SetBkColor( m_clrBkgnd );
}
else
{
// Text
pDC->SetTextColor( m_clrDisableText );
// Text bkgnd
pDC->SetBkColor( m_clrDisableBkgnd );
}
return m_brBkgnd; // Control bkgnd}
BOOL CYourDlg::PreTranslateMessage(MSG* pMsg)
{
switch(pMsg->message)
{
// donot translate WM_CHAR
case WM_CHAR:
return TRUE;
} return CDialog::PreTranslateMessage(pMsg);
}