八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第26部分

VC语言6.0程序设计从入门到精通-第26部分

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                  键时,正文总是滚向左边  

 ES_AUTOVSCROLL   当用户在最后一个可见行按回车键时,正文向上滚动一页  

 ES_CENTER        在多行编辑框中使正文居中  

 ES_LEFT          左对齐正文  

 ES_LOWERCASE     把用户输入的字母统统转换成小写字母  

                  指定一个多行编辑器 。若多行编辑器不指定 ES_AUTOHSCROLL 风格,则会自 

 ES_MULTILINE     动换行,若不指定 ES_AUTOVSCROLL ,则多行编辑器会在窗口中正文装满时 

                  发出警告声响  



                                                                    ·103 ·  


…………………………………………………………Page 113……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



                                                                    续表  



      控件风格                                  含义  

                   默认时,当编辑框失去输入焦点后会隐藏所选的正文,当获得输入焦点时又显 

 ES_NOHIDESEL  

                   示出来。设置该风格可禁止这种默认行为  

                   使编辑框中的正文可以在 ANSI 字符集和 OEM 字符集之间相互转换。这在编辑 

 ES_OEMCONVERT  

                   框中包含文件名时是很有用的  

 ES_PASSWORD       使所有键入的字符都用“*”来显示  

 ES_RIGHT          右对齐正文  

 ES_UPPERCASE      把用户输入的字母统统转换成大写字母  

 ES_READONLY       将编辑框设置成只读的  

                   使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择默 

 ES_WANTRETURN  

                   认的命令按钮,这往往会导致对话框的关闭  



    除了表  5…5  中的风格外,一般还要为文本编辑控件指定  WS_CHILD 、WS_VISIBLE 、 

WS_TABSTOP   和  WS_BORDER   等窗口风格。创建一个普通的单行编辑框应指定风格 

WS_CHILD|WS_VISIBLE|WS_TABSTOP |WS_BORDER|ES_LEFT ,这将创建一个带边框、左 

对 齐 正 文 、 可 水 平 滚 动 的 单 行 编 辑 器 。 要 创 建 一 个 普 通 多 行 编 辑 框 , 还 要 附 加 

ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL      |WS_HSCROLL|   WS_VSCROLL 

风格,这将创建一个可水平和垂直滚动的,带有水平和垂直滚动条的多行编辑器。  

    对于用对话框模板编辑器创建的编辑框控件,可以在控件的属性对话框中指定表 5…5  中 

列出的控件风格。例如,在属性对话框中选择 Multi…line 项,相当于指定了 ES_MULTILINE 

风格。对话框模板编辑器中设置编辑框控件属性的 Edit Properties 对话框如图 5…2 所示。  



                                                        



                             图 5…2    Edit Properties 对话框  



5。2。2    Cedit 类的主要成员函数  



    文本编辑控件支持剪贴板操作,CEdit 类提供了一些与剪贴板有关的成员函数,如表 5…6 

所示。  



    表 5…6                 与剪贴板有关的 CEdit 成员函数  



      成员函数声明                                  用途  

 void Clear()          清除编辑框中被选择的正文  

 void Copy()           把在编辑框中选择的正文拷贝到剪贴板中  

 void Cut()            清除编辑框中被选择的正文并把这些正文拷贝到剪贴板中  

 void Paste()          将剪贴板中的正文插入到编辑框的当前插入符处  

                       撤消上一次键入 。对于单行编辑框,该函数总返回 TRUE,对于多行编辑 

 BOOL Undo()  

                       框,返回 TRUE 表明操作成功,否则返回 FALSE  



    可以用下列 CEdit 或 CWnd 类的成员函数来查询编辑框。在学习下面的函数时,读者会 

经常遇到术语“字符索引”。字符的字符索引是指从编辑框的开头字符开始的字符编号,它是 

从零开始编号的 。也就是说,字符索引实际上是指当把整个编辑正文看作一个字符串数组时, 



 ·104 ·  


…………………………………………………………Page 114……………………………………………………………

                                                                第 5 章    常用控件  



该字符所在的数组元素的下标。  



    1.GetWindowText()函数  



    该成员函数声明方式如下:  



    int GetWindowText(LPTSTR lpszStringBuf; int nMaxCount) const;  



    void GetWindowText(CString& rString) const;  



    这两个函数均是 CWnd 类的成员函数,可用来获得窗口的标题或控件中的正文。第一种 

声明方式用  lpszStringBuf  参数指向的字符串数组作为拷贝正文的缓冲区,参数  nMaxCount 

用于获取拷贝到缓冲区中的最大字符数,该函数返回以字节为单位的实际拷贝字符数(不包 

括结尾的空字节 )。第二种声明方式用一个 CString 对象作为缓冲区。  



    2 .GetWindowTextLength()函数  



    该成员函数声明方式如下:  



    int GetWindowTextLength() const;  



    CWnd 的成员函数,可用来获得窗口的标题或控件中的正文的长度。  



    3 .GetSel()函数  



    该成员函数声明按如下方式进行声明:  



    DWORD GetSel() const;  



    void GetSel(int& nStartChar;int& nEndChar) const;  



    两个函数都是 CEdit  的成员函数,用来获得所选正文的位置。第一种声明方式用于返回 

一个 DWORD 值,其中低位字节说明了被选择的正文开始处的字符索引,高位字节说明了选 

择的正文结束处的最后一个字符的字符索引,如果没有正文被选择,那么返回的低位和高位 

字节都是当前插入符所在字符的字符索引。第二种声明方式中的两个参数是两个引用,其含 

义与第一种声明方式的低位和高位字节相同。  



    4 .LineFromChar() 函数  



    该成员函数声明方式如下:  



    int LineFromChar(int nIndex = – 1) const;  



    CEdit 的成员函数,仅用于多行编辑框,用来返回指定字符索引所在行的行索引(从零 

开始编号)。参数 nIndex 指定了一个字符索引,如果 nIndex 是…1,那么函数将返回选择正文 

的第一个字符所在行的行号,若没有正文被选择,则该函数会返回当前的插入符所在行的行 

号。  



    5 .LineIndex() 函数  



    该成员函数声明方式如下:  



    int LineIndex(int nLine = – 1) const;  



    CEdit 的成员函数,仅用于多行编辑框,用来获得指定行的开头字符的字符索引,如果 

指定行超过了编辑框中的最大行数,该函数将返回…1 。参数 nLine 指定了从零开始的行索引, 



                                                                        ·105 ·  


…………………………………………………………Page 115……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



如果它的值为…1,则函数返回当前的插入符所在行的字符索引。  



    6 .GetLineCount()函数  



    该成员函数声明方式如下:  



    int GetLineCount() const;  



    CEdit 的成员函数,仅用于多行编辑框,用来获得正文的行数。如果编辑框是空的,那 

么该函数的返回值是 1。  



    7 .LineLength() 函数  



    该成员函数声明方式如下:  



    int LineLength( int nLine = – 1 ) const;  



    CEdit 的成员函数,用于获取指定字符索引所在行的字节长度(行尾的回车和换行符不 

计算在内),参数 nLine 说明了为字符索引。如果 nLine 的值为…1,则函数返回当前行的长度 

(假如没有正文被选择),或选择正文占据的行的字符总数减去选择正文的字符数(假如有正 

文被选择)。若用于单行编辑框,则函数返回整个正文的长度。  



    8.GetLine()函数  



    该成员函数声明方式如下:  



    int GetLine( int nIndex; LPTSTR lpszBuffer ) const;  



    int GetLine( int nIndex; LPTSTR lpszBuffer; int nMaxLength ) const;  



    CEdit 的成员函数,仅用于多行编辑框,用来获得指定行的正文(不包括行尾的回车和 

换行符)。参数 nIndex  是行号,lpszBuffer 指向存放正文的缓冲区,nMaxLength  规定了拷贝 

的最大字节数。若指定的行号小于编辑框的实际行数,函数返回实际拷贝的字节数,若指定 

的行号大于编辑框的实际行数,则函数返回 0 。需要注意的是,GetLine 函数不会在缓冲区中 

字符串的末尾添加字符串结束符(NULL )。  



    9 .SetWindowText()函数  



    该函数的声明方式如下:  



    void SetWindowText(LPCTSTR lpszString);  



    CWnd  的成员函数,用来设置窗口的标题或控件中的正文,参数 lpszString  可以是一个 

CString 对象,或是一个指向字符串的指针。  



    10.SetSel()函数  



    该成员函数声明方式如下:  



    void SetSel(DWORD dwSelection;BOOL bNoScroll=FALSE);  



    void SetSel(int nStartChar;int nEndChar;BOOL bNoScroll=FALSE);  



    CEdit 的成员函数,用来选择编辑框中的正文。参数 dwSelection 的低位字节说明了选择 

开始处的字符索引,高位字节说明了选择结束处的字符索引。如果低位字为 0 且高位字节为 

…1,那么就选择所有的正文,如果低位字节为…1,则取消所有的选择。参数 bNoScroll 的值如 



 ·106 ·  


…………………………………………………………Page 116……………………………………………………………

                                                                                               第 5 章    常用控件  



果是 FALSE ,则滚动插入符并使之可见,否则就不滚动。参数 nStartChar 和 nEndChar  的含 

义与参数 dwSelection 的低位字节和高位字节相同。  



      11.ReplaceSel() 函数  



      该成员函数声明方式如下:  



      void ReplaceSel(LPCTSTR lpszNewText;BOOL bCanUndo = FALSE);  



      CEdit 的成员函数,用来将所选正文替换成指定的正文,参数 lpszNewText 指向用来替换 

的字符串。参数 bCanUndo  的值为 TRUE 说明替换是可以被撤消的。  

      如 果 在 编 辑 控 件 中 只 允 许 接 收 数 字 , 可 以 在 一 个 标 准 的 编 辑 控 件 中 指 定 标 志 

ES_NUMBERS ,该标志限制编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以 

使用微软公司提供的屏蔽编辑控件,它是一个很有用的 OLE 定制控件。  

      也可以从 CEdit 类派生一个类并处理 WM_CHAR 消息,然后从编辑控件中过滤出特定的 

字符。具体方法为:首先,使用 ClassWizard 建立一个 CEdit 的派生类,其次,在对话类中指 

定一个成员变量,将编辑控件分类在 OnInitdialog() 中调用下面的代码段:  



      CWnd::SubclassDlgItem  



      {  



      //In your dialog class declaration (。H file )    



      private :    



           CMyEdit m_wndEdit ; // Instance of your new edit control      



      }  



        



      //In you dialog class implementation (。CPP file )    



      BOOL CSampleDialog : : OnInitDialog ( )    



      {    



            …    



                 //Subclass the edit lontrod 。    



                 m_wndEdit。SubclassDlgItem (IDC_EDIT;this );    



            …    



      }  



      然后使用 ClassWizard 处理 WM_CHAR 消息,计算 nChar 并决定所执行的操作,用户可 

以确定是否修改、传送字符。  

      下例说明了如何显示字母字符,如果字符是字母字符,则调用  CWnd::OnChar,否则不 

调用 OnChar 。  



      //Only display alphabetic dharacters 。    



      void CMyEdit::OnChar (UINT nChar;UINT nRepCnt;UINT nFlags)    



      {    



           //Determine if nChar is an alphabetic character 。    



           if (::IsCharAlpha ((TCHAR) nChar))    



                 CEdit::OnChar (nChar; nRepCnt ; nFlags );    



      }  



                                                  

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的