VC++中的通知消息

时间:2022-06-19 19:53:53

编辑框在发生某些事件的时候会向父窗口发送通知消息,我们可以为编辑框添加消息处理函数,现在我们看看编辑框部分消息通知函数:

       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个字节。