编辑框在发生某些事件的时候会向父窗口发送通知消息,我们可以为编辑框添加消息处理函数,现在我们看看编辑框部分消息通知函数:
EN_CHANGE:编辑框的内容被用户改变了,与EN_UPDATE 不同,该消息是在编辑框显示的正文被刷新后才发出的
EN_ERRSPACE: 编辑框控件无法申请足够的动态内存来满足需要
EN_HSCROLL: 用户在水平滚动条上单击鼠标
EN_KILLFOCUS: 编辑框失去输入焦点
EN_MAXTEXT:输入的字符超过了规定的最大字符数。在没有ES_AUTOHSCROLL 或
ES_AUTOVSCROLL: 的编辑框中,当正文超出了编辑框的边框时也会发出该消息
EN_SETFOCUS: 编辑框获得输入焦点
EN_UPDATE: 在编辑框准备显示改变了的正文时发送该消息
EN_VSCROLL: 用户在垂直滚动条上单击鼠标
MFC为编辑框提供了CEdit类。编辑框的所有操作都封装到了CEdit类中。
CEdit类的几个主要的成员函数:
int LineFromChar(int nIndex = –1) const; 返回多行编辑框中指定索引的字符所在行的行号(从零开始),只适用于多行编辑框。
int LineIndex(int nLine = –1) const; 返回由nLine指定行的起始字符在编辑框的整个字符串中的索引,只适用于多行编辑框
void GetSel(int& nStartChar,int& nEndChar) const; 获取选择正文的索引范围。nStartChar返回被选择正文的起始索引,nEndChar返回被选择正文的终止索引(不包括在选择范围内)。如果没有选择正文,则两者均为当前插入符的索引。
void SetSel(int nStartChar,int nEndChar,BOOL bNoScroll=FALSE); 选择编辑框中的正文
void ReplaceSel(LPCTSTR lpszNewText,BOOL bCanUndo = FALSE); 用lpszNewText指向的字符串来替换选择的正文。如果bCanUndo为TRUE则替换可以被撤销。
int GetLineCount() const;获取正文的行数,只适用于多行编辑框
int LineLength( int nLine = –1 ) const;获取指定字符索引所在行的字节长度(行尾的回车和换行符不计算在内)。
int GetLine( int nIndex, LPTSTR lpszBuffer ) const;
int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const; 用来获得指定行的正文(不包括行尾的回车和换行符),只适用于多行编辑框。参数nIndex 是行号,lpszBuffer 指向存放正文的缓冲区,nMaxLength 规定了拷贝的最大字节数。
UINT GetLimitText( ) const; 获取编辑框能够接受的正文的最大字节数。
void LimitText(int nChars = 0); 设置用户在编辑框中可以输入的正文的最大长度(字节数)。如果nChars为0,则最大长度为UINT_MAX个字节。