如何改变Read only状态下的文本框的背影颜色?

居易锦风 2007-08-02 11:30:45
如何改变Read only状态下的文本框的背影颜色?
就是当文本框的Read only为true时(内容不可修改)
如何修改它的背景颜色?
...全文
246 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasonshark 2007-08-02
  • 打赏
  • 举报
回复
在OnCtlColor里判断
pWnd->GetDlgCtrlID() == IDC_EDIT1 && nCtlColor == CTLCOLOR_STATIC
就行了
1982pc 2007-08-02
  • 打赏
  • 举报
回复
重载自己写,
******************ColorEdit.CPP****************

#include "stdafx.h"
#include "ColorEdit.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/******************************************************************************
* 函数名称: CColorStatic
* 功能描述: 构造函数,初始化成员变量
* 访问的表: 无
* 修改的表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
CColorEdit::CColorEdit()
{
// 初始化控件的背景色为窗体的肤色
// m_crBkColor = ::GetSysColor(COLOR_3DFACE);
// 初始化控件的背景色为白色
m_crBkColor = RGB(255, 255, 255);
// 初始化控件的字体颜色为黑色
m_crTextColor = RGB(0, 0, 0);
m_brBkgnd.CreateSolidBrush(m_crBkColor); // Creating the Brush Color For the Edit Box Background
}

/******************************************************************************
* 函数名称: ~CColorStatic
* 功能描述: 析构函数,负责回收工作
* 访问的表: 无
* 修改的表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
CColorEdit::~CColorEdit()
{
}

/******************************************************************************
* MFC消息映射
******************************************************************************/
BEGIN_MESSAGE_MAP(CColorEdit, CEdit)
//{{AFX_MSG_MAP(CColorEdit)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/******************************************************************************
* 函数名称: SetTextColor
* 功能描述: 设置字体颜色
* 访问的表: 无
* 修改的表: 无
* 输入参数: COLORREF crColor:字体颜色值
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
void CColorEdit::SetTextColor(COLORREF crColor)
{
m_crTextColor = crColor; // Passing the value passed by the dialog to the member varaible for Text Color
RedrawWindow();
}

/******************************************************************************
* 函数名称: SetBkColor
* 功能描述: 设置背景色
* 访问的表: 无
* 修改的表: 无
* 输入参数: COLORREF crColor:背景颜色值
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
void CColorEdit::SetBkColor(COLORREF crColor)
{
m_crBkColor = crColor; // Passing the value passed by the dialog to the member varaible for Backgound Color
m_brBkgnd.DeleteObject(); // Deleting any Previous Brush Colors if any existed.
m_brBkgnd.CreateSolidBrush(crColor); // Creating the Brush Color For the Edit Box Background
RedrawWindow();
}

/******************************************************************************
* 函数名称: CtlColor
* 功能描述: 重画函数
* 访问的表: 无
* 修改的表: 无
* 输入参数: CDC* pDC:设备对象指针;UINT nCtlColor:颜色种类数量
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
HBRUSH hbr;
hbr = (HBRUSH)m_brBkgnd; // Passing a Handle to the Brush
pDC->SetBkColor(m_crBkColor); // Setting the Color of the Text Background to the one passed by the Dialog
pDC->SetTextColor(m_crTextColor); // Setting the Text Color to the one Passed by the Dialog

if (nCtlColor) // To get rid of compiler warning
nCtlColor += 0;

return hbr;
}

/******************************************************************************
* 函数名称: SetReadOnly
* 功能描述: 重载函数,设置文本框的属性为只读
* 访问的表: 无
* 修改的表: 无
* 输入参数: BOOL flag:只读标志,TRUE只读,FALSE可写
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* ---------------------------------------------------------
* 2006/11/30 V1.0 Dragon Cai 创建该函数
******************************************************************************/
BOOL CColorEdit::SetReadOnly(BOOL flag)
{
if (flag == TRUE)
SetBkColor(RGB(255, 255, 255));
else
SetBkColor(RGB(255, 255, 255));

return CEdit::SetReadOnly(flag);
}
******************ColorEdit.CPP****************


******************ColorEdit.H****************
#if !defined(AFX_ColorEdit_H__E889B47D_AF6B_4066_B055_967508314A88__INCLUDED_)
#define AFX_ColorEdit_H__E889B47D_AF6B_4066_B055_967508314A88__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/******************************************************************************
* 类定义
******************************************************************************/
class CColorEdit : public CEdit
{

public:
CColorEdit();
virtual ~CColorEdit();
//{{AFX_VIRTUAL(CColorEdit)
//}}AFX_VIRTUAL

// 设置背景色
void SetBkColor(COLORREF crColor);
// 设置字体颜色
void SetTextColor(COLORREF crColor);
// 设置为只读
BOOL SetReadOnly(BOOL flag = TRUE);


protected:
//{{AFX_MSG(CColorEdit)
// This Function Gets Called Every Time Your Window Gets Redrawn.
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
//}}AFX_MSG

DECLARE_MESSAGE_MAP()

private:
CBrush m_brBkgnd; // Holds Brush Color for the Edit Box
COLORREF m_crBkColor; // Holds the Background Color for the Text
COLORREF m_crTextColor; // Holds the Color for the Text
};

//{{AFX_INSERT_LOCATION}}

#endif
ppcat_001 2007-08-02
  • 打赏
  • 举报
回复
自绘?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧