青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

Blog @ Blog

當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見(jiàn)。 -- 聶魯達(dá)

常用鏈接

統(tǒng)計(jì)

積分與排名

BBS

Blog

Web

最新評(píng)論

編輯框控件的一些用法

編輯框(Edit Box)控件實(shí)際上是一個(gè)簡(jiǎn)易的正文編輯器,用戶可以在編輯框中輸入并編輯正文。編輯框既可以是單行的,也可以是多行的,多行編輯框是從零開(kāi)始編行號(hào)的.在一個(gè)多行編輯框中,除了最后一行外,每一行的結(jié)尾處都有一對(duì)回車(chē)換行符(用"\r\n"表示).這對(duì)回車(chē)換行符是正文換行的標(biāo)志,在屏幕上是不可見(jiàn)的.

編輯框控件會(huì)向父窗口發(fā)出如表6.5所示的控件通知消息. 

表6.5

消息

含義

EN_CHANGE

編輯框的內(nèi)容被用戶改變了。與EN_UPDATE不同,該消息是在編輯框顯示的正文被刷新后才發(fā)出的。

EN_ERRSPACE

編輯框控件無(wú)法申請(qǐng)足夠的動(dòng)態(tài)內(nèi)存來(lái)滿足需要。

EN_HSCROLL

用戶在水平滾動(dòng)條上單擊鼠標(biāo)。

EN_KILLFOCUS

編輯框失去輸入焦點(diǎn)。

EN_MAXTEXT

輸入的字符超過(guò)了規(guī)定的最大字符數(shù)。在沒(méi)有ES_AUTOHSCROLL或ES_AUTOVSCROLL的編輯框中,當(dāng)正文超出了編輯框的邊框時(shí)也會(huì)發(fā)出該消息。

EN_SETFOCUS

編輯框獲得輸入焦點(diǎn)。

EN_UPDATE

在編輯框準(zhǔn)備顯示改變了的正文時(shí)發(fā)送該消息。

EN_VSCROLL

用戶在垂直滾動(dòng)條上單擊鼠標(biāo)。

MFC的CEdit類(lèi)封裝了編輯框控件。CEdit類(lèi)的成員函數(shù)Create負(fù)責(zé)創(chuàng)建按鈕控件,該函數(shù)的聲明為

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

參數(shù)dwStyle指定了編輯框控件風(fēng)格,如表6.6所示,dwStyle可以是這些風(fēng)格的組合。rect指定了編輯框的位置和尺寸。pParentWnd指定了父窗口,不能為NULL。編輯框的ID由nID指定。如果創(chuàng)建成功,該函數(shù)返回TRUE,否則返回FALSE.

表6.6 編輯框控件的風(fēng)格

控件風(fēng)格

含義

ES_AUTOHSCROLL

當(dāng)用戶在行尾鍵入一個(gè)字符時(shí),正文將自動(dòng)向右滾動(dòng)10個(gè)字符,當(dāng)用戶按回車(chē)鍵時(shí),正文總是滾向左邊。

ES_AUTOVSCROLL

當(dāng)用戶在最后一個(gè)可見(jiàn)行按回車(chē)鍵時(shí),正文向上滾動(dòng)一頁(yè)。

ES_CENTER

在多行編輯框中使正文居中。

ES_LEFT

左對(duì)齊正文。

ES_LOWERCASE

把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成小寫(xiě)字母。

ES_MULTILINE

指定一個(gè)多行編輯器。若多行編輯器不指定ES_AUTOHSCROLL風(fēng)格,則會(huì)自動(dòng)換行,若不指定ES_AUTOVSCROLL,則多行編輯器會(huì)在窗口中正文裝滿時(shí)發(fā)出警告聲響。

ES_NOHIDESEL

缺省時(shí),當(dāng)編輯框失去輸入焦點(diǎn)后會(huì)隱藏所選的正文,當(dāng)獲得輸入焦點(diǎn)時(shí)又顯示出來(lái)。設(shè)置該風(fēng)格可禁止這種缺省行為。

ES_OEMCONVERT

使編輯框中的正文可以在ANSI字符集和OEM字符集之間相互轉(zhuǎn)換。這在編輯框中包含文件名時(shí)是很有用的。

ES_PASSWORD

使所有鍵入的字符都用“*”來(lái)顯示。

ES_RIGHT

右對(duì)齊正文。

ES_UPPERCASE

把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成大寫(xiě)字母。

ES_READONLY

將編輯框設(shè)置成只讀的。

ES_WANTRETURN

使多行編輯器接收回車(chē)鍵輸入并換行。如果不指定該風(fēng)格,按回車(chē)鍵會(huì)選擇缺省的命令按鈕,這往往會(huì)導(dǎo)致對(duì)話框的關(guān)閉。

除了上表中的風(fēng)格外,一般還要為控件指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_BORDER窗口風(fēng)格,WS_BORDER使控件帶邊框。創(chuàng)建一個(gè)普通的單行編輯框應(yīng)指定風(fēng)格為WS_CHILD|WS_VISIBLE|WS_TABSTOP |WS_BORDER|ES_LEFT|ES_AUTOHSCROLL,這將創(chuàng)建一個(gè)帶邊框、左對(duì)齊正文、可水平滾動(dòng)的單行編輯器。要?jiǎng)?chuàng)建一個(gè)普通多行編輯框,還要附加ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL |WS_HSCROLL| WS_VSCROLL風(fēng)格,這將創(chuàng)建一個(gè)可水平和垂直滾動(dòng)的,帶有水平和垂直滾動(dòng)條的多行編輯器。

對(duì)于用對(duì)話框模板編輯器創(chuàng)建的編輯框控件,可以在控件的屬性對(duì)話框中指定表6.6中列出的控件風(fēng)格。例如,在屬性對(duì)話框中選擇Multi-line項(xiàng),相當(dāng)與指定了ES_MULTILINE風(fēng)格。

編輯框支持剪貼板操作。CEdit類(lèi)提供了一些與剪貼板有關(guān)的成員函數(shù),如表6.7所示。

表6.7 與剪切板有關(guān)的CEdit成員函數(shù)

函數(shù)聲明

用途

void Clear( )

清除編輯框中被選擇的正文。

void Copy( )

把在編輯框中選擇的正文拷貝到剪貼板中。

void Cut( )

清除編輯框中被選擇的正文并把這些正文拷貝到剪貼板中。

void Paste( )

將剪貼板中的正文插入到編輯框的當(dāng)前插入符處。

BOOL Undo( )

撤消上一次鍵入。對(duì)于單行編輯框,該函數(shù)總返回TRUE,對(duì)于多行編輯框,返回TRUE表明操作成功,否則返回FALSE。

可以用下列CEdit或CWnd類(lèi)的成員函數(shù)來(lái)查詢編輯框。在學(xué)習(xí)下面的函數(shù)時(shí),讀者會(huì)經(jīng)常遇到術(shù)語(yǔ)字符索引.字符的字符索引是指從編輯框的開(kāi)頭字符開(kāi)始的字符編號(hào),它是從零開(kāi)始編號(hào)的.也就是說(shuō),字符索引實(shí)際上是指當(dāng)把整個(gè)編輯正文看作一個(gè)字符串?dāng)?shù)組時(shí),該字符所在的數(shù)組元素的下標(biāo).

int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;
void GetWindowText( CString& rString ) const;
這兩個(gè)函數(shù)均是CWnd類(lèi)的成員函數(shù),可用來(lái)獲得窗口的標(biāo)題或控件中的正文。第一個(gè)版本的函數(shù)用lpszStringBuf參數(shù)指向的字符串?dāng)?shù)組作為拷貝正文的緩沖區(qū),參數(shù)nMaxCount可以拷貝到緩沖區(qū)中的最大字符數(shù),該函數(shù)返回以字節(jié)為單位的實(shí)際拷貝字符數(shù)(不包括結(jié)尾的空字節(jié))。第二個(gè)版本的函數(shù)用一個(gè)CString對(duì)象作為緩沖區(qū)。

int GetWindowTextLength( ) const;
CWnd的成員函數(shù),可用來(lái)獲得窗口的標(biāo)題或控件中的正文的長(zhǎng)度。

DWORD GetSel( ) const;
void GetSel( int& nStartChar, int& nEndChar ) const;
兩個(gè)函數(shù)都是CEdit的成員函數(shù),用來(lái)獲得所選正文的位置。GetSel的第一個(gè)版本返回一個(gè)DWORD值,其中低位字說(shuō)明了被選擇的正文開(kāi)始處的字符索引,高位字說(shuō)明了選擇的正文結(jié)束處的后面一個(gè)字符的字符索引,如果沒(méi)有正文被選擇,那么返回的低位和高位字節(jié)都是當(dāng)前插入符所在字符的字符索引。GetSel的第二個(gè)版本的兩個(gè)參數(shù)是兩個(gè)引用,其含義與第一個(gè)版本函數(shù)返回值的低位和高位字相同。

int LineFromChar( int nIndex = –1 ) const;
CEdit的成員函數(shù),僅用于多行編輯框,用來(lái)返回指定字符索引所在行的行索引(從零開(kāi)始編號(hào))。參數(shù)nIndex指定了一個(gè)字符索引,如果nIndex是-1,那么函數(shù)將返回選擇正文的第一個(gè)字符所在行的行號(hào),若沒(méi)有正文被選擇,則該函數(shù)會(huì)返回當(dāng)前的插入符所在行的行號(hào)。

int LineIndex( int nLine = –1 ) const;
CEdit的成員函數(shù),僅用于多行編輯框,用來(lái)獲得指定行的開(kāi)頭字符的字符索引,如果指定行超過(guò)了編輯框中的最大行數(shù),該函數(shù)將返回-1。參數(shù)nLine是指定了從零開(kāi)始的行索引,如果它的值為-1,則函數(shù)返回當(dāng)前的插入符所在行的字符索引。

int GetLineCount( ) const;
CEdit的成員函數(shù),僅用于多行編輯框,用來(lái)獲得正文的行數(shù)。如果編輯框是空的,那么該函數(shù)的返回值是1。

int LineLength( int nLine = –1 ) const;
CEdit的成員函數(shù),用于獲取指定字符索引所在行的字節(jié)長(zhǎng)度(行尾的回車(chē)和換行符不計(jì)算在內(nèi))。參數(shù)nLine說(shuō)明了字符索引.如果nLine的值為-1,則函數(shù)返回當(dāng)前行的長(zhǎng)度(假如沒(méi)有正文被選擇),或選擇正文占據(jù)的行的字符總數(shù)減去選擇正文的字符數(shù)(假如有正文被選擇)。若用于單行編輯框,則函數(shù)返回整個(gè)正文的長(zhǎng)度。

int GetLine( int nIndex, LPTSTR lpszBuffer ) const;
int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const;
CEdit的成員函數(shù),僅用于多行編輯框,用來(lái)獲得指定行的正文(不包括行尾的回車(chē)和換行符)。參數(shù)nIndex是行號(hào),lpszBuffer指向存放正文的緩沖區(qū),nMaxLength規(guī)定了拷貝的最大字節(jié)數(shù),若。函數(shù)返回實(shí)際拷貝的字節(jié)數(shù),若指定的行號(hào)大于編輯框的實(shí)際行數(shù),則函數(shù)返回0。需要注意的是,GetLine函數(shù)不會(huì)在緩沖區(qū)中字符串的末尾加字符串結(jié)束符(NULL).

 

下列CWnd或CEdit類(lèi)的成員函數(shù)可用來(lái)修改編輯框控件。

void SetWindowText( LPCTSTR lpszString );
CWnd的成員函數(shù),可用來(lái)設(shè)置窗口的標(biāo)題或控件中的正文。參數(shù)lpszString可以是一個(gè)CString對(duì)象,或是一個(gè)指向字符串的指針。

void SetSel( DWORD dwSelection, BOOL bNoScroll = FALSE );
void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );
CEdit的成員函數(shù),用來(lái)選擇編輯框中的正文。參數(shù)dwSelection的低位字說(shuō)明了選擇開(kāi)始處的字符索引,高位字說(shuō)明了選擇結(jié)束處的字符索引。如果低位字為0且高位字節(jié)為-1,那么就選擇所有的正文,如果低位字節(jié)為-1,則取消所有的選擇.參數(shù)bNoScroll的值如果是FALSE,則滾動(dòng)插入符并使之可見(jiàn),否則就不滾動(dòng).參數(shù)nStartChar和nEndChar的含義與參數(shù)dwSelection的低位字和高位字相同.

void ReplaceSel( LPCTSTR lpszNewText, BOOL bCanUndo = FALSE );
CEdit的成員函數(shù),用來(lái)將所選正文替換成指定的正文.參數(shù)lpszNewText指向用來(lái)替換的字符串.參數(shù)bCanUndo的值為T(mén)RUE說(shuō)明替換是否可以被撤消的.

 

在調(diào)用上述函數(shù)時(shí),如果涉及的是一個(gè)多行編輯框,那么除了LineLength和GetLine函數(shù)外,都要把回車(chē)和換行符考慮在內(nèi).例如,假設(shè)在編輯框中有如下幾行正文:

abcd

efg

ij

那么字母"e"的字符索引是6而不是4,因?yàn)椋bcd"后面還有一對(duì)回車(chē)換行符.調(diào)用LineLength(7)會(huì)返回第二行的長(zhǎng)度3.調(diào)用LineIndex(2)會(huì)得到11.調(diào)用LineFromChar(8)會(huì)返回1.如果沒(méi)有選擇任何正文,并且插入符在字母"e"上,那么調(diào)用GetSel返回值的低位和高位字都是6.

通過(guò)分析上述函數(shù),我們可以總結(jié)出一些查詢和設(shè)置編輯框的方法.

調(diào)用CWnd的成員函數(shù)GetWindowText和SetWindowText可以查詢和設(shè)置編輯框的整個(gè)正文,在上一章的Register程序中,我們就使用過(guò)這兩個(gè)函數(shù).

如果想對(duì)多行編輯框逐行查詢,那么應(yīng)該先調(diào)用GetLineCount獲得總行數(shù),然后再調(diào)用GetLine來(lái)獲取每一行的正文.下面一段代碼演示了如何對(duì)多行編輯框進(jìn)行逐行查詢.

char buf[40];

int total=MyEdit.GetLineCount();

int i,length;

for(i=0;i

{

length=MyEdit.GetLine(i,buf,39);

buf[length]=0; //加字符串結(jié)束符

. . . . . .}

可以利用LineIndex和LineFromChar來(lái)在字符索引和字符的行列坐標(biāo)之間相互轉(zhuǎn)換.下列代碼演示了在已知字符索引的情況下,如何獲得對(duì)應(yīng)的行列坐標(biāo):
int row,column;
row=MyEdit.LineFromChar(charIndex);
column=charIndex-MyEdit.LineIndex(row);
下列代碼演示了在已知字符的行列坐標(biāo)的情況下,如何獲得對(duì)應(yīng)的字符索引:
int charIndex;
charIndex=MyEdit.LineIndex(row)+column;
不難看出字符索引與對(duì)應(yīng)的行列坐標(biāo)的關(guān)系是:字符索引=LineIndex(行坐標(biāo))+列坐標(biāo).

對(duì)于選擇正文的查詢和設(shè)置,應(yīng)該利用函數(shù)GetSel、SetSel和ReplaceSel.

可以利用GetSel和SetSel來(lái)查詢和設(shè)置插入符的位置.SetSel可以使編輯框滾動(dòng)到插入符的新位置.
要獲取插入符的行列坐標(biāo),可用下面的代碼實(shí)現(xiàn):
MyEdit.SetSel(-1,0); //取消正文的選擇
int start,end,row,column;
MyEdit.GetSel(start,end); //start或end的值就是插入符的字符索引
row=MyEdit.LineFromChar(start); //獲取插入符的行坐標(biāo)
column=start-MyEdit.LineIndex(row); //獲取插入符的列坐標(biāo)
下面的代碼演示了如何把插入符移到指定的行和列:
MyEdit.SetSel(-1,0); //取消正文的選擇
int charIndex=MyEdit.LineIndex(row)+column;
MyEdit.SetSel(charIndex,charIndex);

可以利用ReplaceSel函數(shù)在 插入符處插入正文,典型的代碼如下所示:
MyEdit.SetSel(-1,0); //取消正文的選擇
MyEdit.ReplaceSel(“......”);

可以利用ReplaceSel清除編輯框中的正文,典型的代碼如下所示:
MyEdit.SetSel(0,-1); //選擇全部正文
MyEdit.ReplaceSel(“”);

posted on 2007-12-21 17:00 isabc 閱讀(5029) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): VC Demo

評(píng)論

# re: 編輯框控件的一些用法 2008-10-01 11:46 GK

謝謝  回復(fù)  更多評(píng)論   

廣告信息(免費(fèi)廣告聯(lián)系)

中文版MSDN:
歡迎體驗(yàn)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            最新亚洲视频| 欧美性大战xxxxx久久久| 欧美精品一区二区视频 | 最新亚洲激情| 亚洲第一福利社区| 久久阴道视频| 久久夜色精品国产| 亚洲免费观看| 国产区在线观看成人精品| 欧美日韩一区二| 亚洲一区二区免费| 久久久久欧美精品| 欧美特黄一级大片| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产视频久久久久久久| 亚洲视频网站在线观看| 亚洲欧美国产一区二区三区| 欧美四级在线观看| 蜜桃久久精品一区二区| 久久精品欧洲| 亚洲男人影院| 久久久久成人精品| 激情文学综合丁香| 国产精品资源在线观看| 香蕉久久一区二区不卡无毒影院| 在线一区观看| 亚洲午夜精品久久| 国内揄拍国内精品久久| 久久精品国产一区二区三区| 欧美激情久久久久久| 久久黄色级2电影| 亚洲一区二区三区涩| 在线日韩av永久免费观看| 国产精品美女一区二区| 久久免费精品日本久久中文字幕| 欧美在线欧美在线| 日韩视频在线一区| 一区二区三区欧美日韩| 亚洲大片在线| 亚洲日本成人网| 99精品视频免费| 亚洲国产日韩欧美在线图片 | 久久一本综合频道| 欧美一区二区视频在线观看2020| 亚洲性线免费观看视频成熟| 亚洲视频在线观看免费| 亚洲精选在线观看| 亚洲久色影视| 欧美在线网址| 日韩系列欧美系列| 亚洲天堂偷拍| 亚洲国产天堂久久综合网| 欧美va天堂在线| 亚洲精品视频一区二区三区| 久久亚洲私人国产精品va| 欧美福利专区| 一区二区三区久久久| 一区二区三区免费在线观看| 韩国成人精品a∨在线观看| 国产午夜精品理论片a级大结局 | 日韩视频免费看| 国产精品v欧美精品v日韩| 欧美涩涩网站| 亚洲高清三级视频| 亚洲毛片网站| 欧美伊人久久久久久久久影院| 蜜桃av噜噜一区| 一本色道久久综合一区| 欧美日韩免费视频| 亚洲高清在线播放| 欧美激情影院| aa国产精品| 免费成人高清在线视频| 国产精品一区二区在线观看| 亚洲大黄网站| 久久久亚洲人| 欧美亚洲网站| 亚洲国产精品一区二区第一页| 午夜欧美精品久久久久久久| 欧美一区二区成人| 国产综合av| 亚洲欧美制服另类日韩| 亚洲精品在线观看免费| 亚洲美女视频网| 欧美激情精品久久久久久黑人| 久久成人人人人精品欧| 亚洲天堂av综合网| 一区二区三区免费在线观看| 中文国产成人精品久久一| 欧美三级在线| 久久久久高清| 国产曰批免费观看久久久| 久久久99国产精品免费| 亚洲日产国产精品| 国产日韩在线视频| 99国内精品| 亚洲人线精品午夜| 91久久精品国产91久久性色| 久久精品国产2020观看福利| 欧美激情第二页| 亚洲欧洲一区二区三区久久| 久久免费视频这里只有精品| 久久国产婷婷国产香蕉| 欧美高清视频免费观看| 午夜欧美精品久久久久久久| 久久夜色精品国产欧美乱| 欧美在线播放| 欧美三级午夜理伦三级中视频| 美国十次成人| 国产麻豆精品视频| 日韩一二三在线视频播| 亚洲午夜久久久久久久久电影院 | 亚洲精品欧美日韩| 亚洲综合清纯丝袜自拍| 亚洲午夜精品久久| 看片网站欧美日韩| 欧美一区日韩一区| 欧美日韩亚洲一区| 最新亚洲视频| 在线观看欧美精品| 国产精品老牛| 亚洲无吗在线| 亚洲视频在线免费观看| 国产精品视频午夜| 亚洲国产精品99久久久久久久久| 国产伦精品一区二区三区免费迷| 欧美激情视频一区二区三区不卡| 国产午夜精品理论片a级大结局| 99国产一区二区三精品乱码| 亚洲经典在线| 久久久999精品免费| 欧美一区永久视频免费观看| 欧美黄色aa电影| 欧美成人官网二区| 国产综合欧美在线看| 亚洲欧美一区二区三区久久| 亚洲自拍另类| 欧美日韩裸体免费视频| 亚洲国产一区二区三区a毛片| 在线日韩成人| 麻豆国产精品777777在线| 欧美 日韩 国产 一区| 一区二区在线观看av| 久久精品在线播放| 免费欧美在线视频| 亚洲黄色av一区| 欧美激情综合网| 99精品欧美一区二区三区综合在线| 在线亚洲精品福利网址导航| 欧美三级电影大全| 亚洲在线观看免费| 久久se精品一区精品二区| 国产日韩欧美在线一区| 香蕉久久a毛片| 免费永久网站黄欧美| 亚洲乱码国产乱码精品精天堂| 欧美高清在线观看| 一区二区三区波多野结衣在线观看| 亚洲一区二区三区在线播放| 国产精品高潮粉嫩av| 国产精品99久久久久久人 | 亚洲激情视频在线播放| 亚洲人www| 国产精品成人国产乱一区| 午夜精品一区二区三区四区| 美女黄毛**国产精品啪啪| 亚洲卡通欧美制服中文| 欧美日韩视频在线一区二区 | 久久精品成人欧美大片古装| 久久久久久综合| 91久久国产综合久久91精品网站| 欧美激情1区2区| 亚洲夜间福利| 欧美高清在线一区| 亚洲专区一区| …久久精品99久久香蕉国产| 欧美日韩在线免费观看| 欧美一区二区性| 亚洲黄一区二区三区| 亚洲在线观看| 在线精品视频一区二区| 欧美日韩一二三四五区| 欧美一区二区视频97| 亚洲国产清纯| 久久精品亚洲国产奇米99| 亚洲国产欧美一区二区三区同亚洲| 欧美日韩aaaaa| 久久精品国产视频| 99视频热这里只有精品免费| 久久一综合视频| 亚洲欧美激情在线视频| 亚洲第一福利在线观看| 国产免费亚洲高清| 欧美精品粉嫩高潮一区二区| 欧美伊人久久久久久久久影院| 亚洲国产日韩欧美在线动漫| 久久手机免费观看| 欧美一区二区三区视频在线| 99亚洲一区二区| 亚洲欧洲中文日韩久久av乱码|