设置控件的容量:
EditBox控件默认情况下只能装入64k的文本,如果超出,多出部分会被自动截掉。利用CEdit的SetLimitText()函数可重新设置控件容量
函数原型:
Void SetLimitText(UINT nMax)
参数为nMax为控件可接收的文本最大字节数。
设置方法:用ClassWizard在CEditBox类中添加消息函数PreSubclassWindow(),把设置文本容量的语句放在里面即可。
void CEditBox::PreSubclassWindow()
{
SetLimitText( -1 ); //设置编辑控件可接收的最大字节数
CEdit::PreSubclassWindow();
}
因为nMax为无符号整型,-1是把它设置为可以取到的最大值。你也可以根据需要设置控件的容量。
注意:在不同操作系统下,控件可设置的最大容量也不同。如果是Windows98,这个值就是64K,无法再增大了,而在Windows2000和WindowsXP下这个值要大得多,才可以起到增加控件容量的目的。
二、设置编辑控件的前景色、背景色和字体:
在CEditBox的头文件中加入以下变量定义:
COLORREF m_ForeColor; //文本颜色
COLORREF m_BackColor; //背景色
CBrush m_BkBrush; //背景刷
CFont* p_Font; //字体指针
int m_FontSize; //字体大小(1/10点)
CString m_FontName; //字体名
在CEditBox的构造函数中设置它们的初值:
CEditBox::CEditBox()
{
m_ForeColor = RGB(0,0,0); //文字颜色(黑)
m_BackColor = RGB(255,255,255); //文字背景色(白)
m_BkBrush.CreateSolidBrush(m_BackColor); //背景刷
p_Font = NULL; //字体指针
}
在CEditBox的析构函数中回收创建的字体资源:
CEditBox::~CEditBox()
{
if( p_Font )
delete p_Font; //回收字体资源
}
这里只设置了前景色和背景色的默认值,如果想设置默认字体,可在上面的PreSubclassWindow()函数中进行设置:
void CEditBox::PreSubclassWindow()
{
SetLimitText( -1 ); //设置编辑控件可接收的最大字节数
m_FontSize = 100;
m_FontName = _T("宋体");
p_Font = new CFont; //生成字体对象
p_Font->CreatePointFont( m_FontSize, m_FontName ); //创建字体
SetFont( p_Font ); //设置控件默认字体
CEdit::PreSubclassWindow();
}
这里使用了比较简单的CreatePointFont()函数创建字体,它只需给出字体尺寸和字体名。如果想创建更复杂的字体,可以改用CreateFont()函数。本例中设置控件的初始字体为尺寸为100(0.1点)的“宋体”字。
如果你想用EditBox本身的默认字体作为初始字体,就不要在PreSubclassWindow()函数中加入这些语句。
用ClassWizard添加消息反射函数CtlColor()来修改控件的文本颜色和背景色。
注意:在ClassWizar
EditBox控件默认情况下只能装入64k的文本,如果超出,多出部分会被自动截掉。利用CEdit的SetLimitText()函数可重新设置控件容量
函数原型:
Void SetLimitText(UINT nMax)
参数为nMax为控件可接收的文本最大字节数。
设置方法:用ClassWizard在CEditBox类中添加消息函数PreSubclassWindow(),把设置文本容量的语句放在里面即可。
void CEditBox::PreSubclassWindow()
{
SetLimitText( -1 ); //设置编辑控件可接收的最大字节数
CEdit::PreSubclassWindow();
}
因为nMax为无符号整型,-1是把它设置为可以取到的最大值。你也可以根据需要设置控件的容量。
注意:在不同操作系统下,控件可设置的最大容量也不同。如果是Windows98,这个值就是64K,无法再增大了,而在Windows2000和WindowsXP下这个值要大得多,才可以起到增加控件容量的目的。
二、设置编辑控件的前景色、背景色和字体:
在CEditBox的头文件中加入以下变量定义:
COLORREF m_ForeColor; //文本颜色
COLORREF m_BackColor; //背景色
CBrush m_BkBrush; //背景刷
CFont* p_Font; //字体指针
int m_FontSize; //字体大小(1/10点)
CString m_FontName; //字体名
在CEditBox的构造函数中设置它们的初值:
CEditBox::CEditBox()
{
m_ForeColor = RGB(0,0,0); //文字颜色(黑)
m_BackColor = RGB(255,255,255); //文字背景色(白)
m_BkBrush.CreateSolidBrush(m_BackColor); //背景刷
p_Font = NULL; //字体指针
}
在CEditBox的析构函数中回收创建的字体资源:
CEditBox::~CEditBox()
{
if( p_Font )
delete p_Font; //回收字体资源
}
这里只设置了前景色和背景色的默认值,如果想设置默认字体,可在上面的PreSubclassWindow()函数中进行设置:
void CEditBox::PreSubclassWindow()
{
SetLimitText( -1 ); //设置编辑控件可接收的最大字节数
m_FontSize = 100;
m_FontName = _T("宋体");
p_Font = new CFont; //生成字体对象
p_Font->CreatePointFont( m_FontSize, m_FontName ); //创建字体
SetFont( p_Font ); //设置控件默认字体
CEdit::PreSubclassWindow();
}
这里使用了比较简单的CreatePointFont()函数创建字体,它只需给出字体尺寸和字体名。如果想创建更复杂的字体,可以改用CreateFont()函数。本例中设置控件的初始字体为尺寸为100(0.1点)的“宋体”字。
如果你想用EditBox本身的默认字体作为初始字体,就不要在PreSubclassWindow()函数中加入这些语句。
用ClassWizard添加消息反射函数CtlColor()来修改控件的文本颜色和背景色。
注意:在ClassWizar