擴(kuò)展vb標(biāo)準(zhǔn)控件功能

擴(kuò)展vb標(biāo)準(zhǔn)控件功能

ID:1555292

大?。?7.00 KB

頁數(shù):8頁

時間:2017-11-12

擴(kuò)展vb標(biāo)準(zhǔn)控件功能_第1頁
擴(kuò)展vb標(biāo)準(zhǔn)控件功能_第2頁
擴(kuò)展vb標(biāo)準(zhǔn)控件功能_第3頁
擴(kuò)展vb標(biāo)準(zhǔn)控件功能_第4頁
擴(kuò)展vb標(biāo)準(zhǔn)控件功能_第5頁
資源描述:

《擴(kuò)展vb標(biāo)準(zhǔn)控件功能》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、擴(kuò)展VB標(biāo)準(zhǔn)控件功能VB相關(guān)技術(shù):http://blog.sina.com.cn/s/blog_5ccce2820100lof8.html很明顯的,Windows中的控件提供了比VB中的控件多的多的屬性?;蛘呤且驗镸icrosoft太懶了,或者M(jìn)icrosoft認(rèn)為,一個用VB的程序員,永久不會碰到那些屬性。??  比方說,我們來看看一個很普通的多行文本框。它和Windows中的編輯框(EditBox)幾乎在功能上幾乎沒有什么區(qū)別,只不過少了幾個屬性。比如,編輯框中有一個屬性用來指明它所包含的文本行數(shù),你還能夠通過屬性來得到編輯框中看的見的第一行文本的行序號

2、(同下拉列表的TopIndex相類似)。??  那么,能夠通過什么方法來發(fā)掘這些本來不具有于VB中的屬性嗎?答案是肯定的。只不過有點麻煩,又要用到API了。在一個名為SendMessage的API函數(shù)的協(xié)助下,我們對普通的文本框的功能進(jìn)行一些很有用的擴(kuò)展:你能夠把文本框中的每一行當(dāng)做一個字符串?dāng)?shù)組中的一個元從來處理。當(dāng)你想要對文本框的內(nèi)容進(jìn)行分析的時候,這是非常有用的。比方說,如果你想做一個HTML的編輯器程序,并且希望它能有彩色代碼來區(qū)分不同得代碼段(和VB的代碼編輯器差不多的),對每一行進(jìn)行分析要比對整個文本進(jìn)行分析不是要來的方便,容易的多嗎?下面我們來

3、看看例子。??  Let’sgettowork...??來源:www.va1314.com/bc  既然要用到API函數(shù),首先要做的當(dāng)然是聲明SendMessage了:??  PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,_??  ByValwMsgAsLong,_??  ByValwParamAsLong,_??  lParamAsAny)AsLong??  你還有對要發(fā)送給文本框的消息進(jìn)行聲明。比方說,如果你想要寫一個能告訴你文本框中第一個可見

4、行的序號的函數(shù),你就要做如下的消息聲明:??  PublicConstEM_GETFIRSTVISIBLELINE=&HCE??  然后你就能夠?qū)懞瘮?shù)了:??  PublicFunctionTopLineIndex(txtBoxAsTextBox)AsLong??  TopLineIndex=SendMessage(txtBox.hWnd,_??  EM_GETFIRSTVISIBLELINE,0&,0&)??  EndFunction??  因為消息EM_GETFIRSTVISIBLELINE不需要任何的參數(shù),因而wParam和lParam都必須賦值為0。

5、如果你想把這個函數(shù)應(yīng)用在一個富文本框上而標(biāo)準(zhǔn)文本框,僅僅需要把函數(shù)的的參數(shù)類型由TextBox改為RichTextBox就能夠了。不過要記得得是,這個行序號是以0為開始的,當(dāng)函數(shù)前往0時指的是第一行。??  富文本框有一個方法GetLineFromChar能夠更具給定的字符序號來判斷它所在的行序號。而標(biāo)準(zhǔn)的文本框卻沒有這個功能。我們已能夠通過上面的方法來處理這個問題。不過這一次,你需要用到的是EM_LINEFROMCHAR消息:??  PublicConstEM_LINEFROMCHAR=&HC9??  EM_LINEFROMCHAR消息把要傳送的字符序號放

6、在參數(shù)wParam中:??  PublicFunctionGetLineFromChar(txtBoxAsTextBox,CharPosAsLong)AsLong??  GetLineFromChar=SendMessage(_txtBox.hWnd,EM_LINEFROMCHAR,CharPos,0&)??  EndFunction??  因而,如果你想知道光標(biāo)所在行的具體的行序號,用上面的這個函數(shù)就能夠輕松的實現(xiàn)了:??  DimlngLineIndexAsLong??  lngLineIndex=GetLineFromChar(Text1,Text1.

7、SelStart)??  MsgBox"Youareonlinenumber"&lngLineIndex+1??  反過來,你也能夠查到每一行的第一個字符在全文中的字符序號,EM_LINEINDEX消息能協(xié)助你做到這一點:??  PublicConstEM_LINEINDEX=&HBB??  PublicFunctionGetCharFromLine(txtBoxAsTextBox,LineIndexAsLong)AsLong??  GetCharFromLine=SendMessage(_??  txtBox.hWnd,EM_LINEINDEX,LineI

8、ndex,0&)??  EndFunction?? 

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。