• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    防止文本控件中的部分滾動

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 作者:譚翁

    Windows API的SendMessage函數可以用來向VisualBasic控件中發送消息,例如向文本框控件上發送消息。本文介紹如何利用該函數防止文本框控件中的部分文本滾動,即該控件中不能滾動的部分不能被用戶看見。
    發送消息到文本框控件
    Visual Basic中的文本框控件就是一個最小化的字處理程序。當該文本控件的MultiLine屬性被設置為True的時候,則文本可以自動換行;當在文本框控件中鍵入了許多文本時,控件中的文本會向上滾動。這時文本就變得看不到了,但這些文本實際上仍然在控件中——它們并沒有被刪除。
    Windows API的SendMessage函數可以用來防止文本框控件中的文本滾動因而超出我們的視線。當創建該文本框控件時,它的客戶區域格式化為一個矩形(該區域就是鍵入文本的地方),可以給該控件發送EM_SETRECTNP消息,對該矩形區域進行限制,以在文本框的客戶區域中指定一個特定區域。
    在下面的樣例程序中,我們希望文本控件的后一半原封不動地保持完整,即不希望文本滾動而超出視線?梢詮奈谋究蚩丶腍eight屬性中提取出它的高度,并將該值除以2,得到該文本框控件后一半的坐標。然后將該結果傳遞給SendMessage函數,告訴EM_SETRECTNP防止該矩形區域滾動。
    有些程序員可能會希望使用EM_SETRECT消息代替EM_SETRECTNP消息。但是,使用EM_SETRECT消息會停止Windows對該格式化矩形區域中的文本的重新繪制,導致文本框控件中的文本會看不到。
     
    樣例程序
    該程序顯示了如何臨時凍結一個文本框控件中的特定部分,該部分包含的文本不能滾動,因而不會超出視線之外。
    1.在VisualBasic中開始一個新的工程,采用缺省的方法建立Form1。
    2.將如下常量和聲明語句添加到Form1的通用聲明部分中(注意該聲明語句需要書寫在一行內):
    Private Declare Function SendMessage Lib "User"
    (ByVal hWnd As Integer, ByVal wMsg As Integer,
    ByVal wParam As Integer, lParam As Any) As Long
    Const WM_USER = &H400
    Const EM_SETRECTNP = WM_USER + 4
    Const EM_SETRECT = WM_USER + 3
    對于32位環境下使用Visual Basic5.0的用戶,需要將如下聲明語句添加到Form1的通用聲明部分中:
    Private Declare Function SendMessage Lib "user32"
    Alias "SendMessageA" (ByVal hwnd As Long, ByVal
    wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Const EM_SETRECTNP = &HB4
    Const EM_SETRECT = &HB3
    3.將如下代碼添加到Form1的Form_Load事件中:
    Private Sub Form_Load()
    Text1.Text = " 這 是 我 們 希 望 顯 示 出 來 的 第 一 段"
    Text1.Text = Text1.Text & " 它 位 于 文 本 框 控 件 中"
    Text1.Text = Text1.Text & Chr$(13) & Chr$(10) & " 這 是 第 二 段, 我 們"
    Text1.Text = Text1.Text & " 希 望 將 之 凍 結 以 使 文 本 不 能 滾 動 "
    End Sub
    4. 將如下代碼添加到Form1的Click事件中:
    Private Sub Form_Click()
    Dim R As RECT
    Dim X As Long
    ScaleMode = 3
    R.Left = 0
    R.Top = 0
    R.Right = Text1.Width
    R.Bottom = Text1.Height / 2
    X = SendMessage(Text1.hWnd, EM_SETRECTNP, 0, R)
    End Sub
    5.創建一個新的模塊。采用缺省的方法建立Module1.Bas。
    6.將如下TYPE結構添加到Module1.Bas中:
    Type RECT
    Left As Integer
    Top As Integer
    Right As Integer
    Bottom As Integer
    End Type
    對于32位環境下使用Visual Basic 5.0的用戶,需要將如下TYPE結構添加到Module1.Bas中:
    Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type
    7.在Form1上添加一個文本框控件,采用缺省的方法建立Text1,將其MultiLine屬性設置為True。
    按下F5來執行該程序,我們可以看到文本框顯示在Form1上。在窗體上單擊一次鼠標,將新的文本鍵入到該文本框控件中。這時我們可以注意到,當我們在文本框控件的開頭處鍵入新的文本時,在文本框控件下半部分的文本不會滾動。
    如果我們將EM_SETRECT消息替代EM_SETRECTNP消息發送給文本框,再次運行該程序,這時我們會發現,文本框的下半部分顯示不出來,盡管實際上文本仍然是存儲在控件中的。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>