热情软件屋

 

如何滚动RichTextBox和得到被选中文本的行数


编号:QA000483
建立日期: 1999年2月6日 最后修改日期:1999年2月6日
所属类别:

zp:
    我在运用SendMessage时遇到问题:
    当我用
     X = SendMessage(RichTextBox1.hwnd, WM_VSCROLL, SB_LINEDOWN, ByVal 0&)
     MsgBox (X)
    时出现问题。当滚动条滚到底端时,RichTextBox仍然不停滚动, 而x的值始终保持为零。 同样将richtextbox1.hwnd换成text1.hwnd时,x有值,当text滚动条滚到底端时则停止滚动,x为零。请问如何检测RichTextBox滚动到底部?
    另外能否得到RichTextBox中被选中文本的行数。

回答:

    在Win32的文档中并没有规定WM_VSCROLL返回值的含义,所以RichTextBox和TextBox处理这条消息有一些不同也就不奇怪了。有两个办法解决你的问题:一个是借助SelStart属性可以得到当前光标的位置,用EM_LINEINDEX可以得到当前行,用EM_GETLINECOUNT获得总行数,这样就可以知道到末尾有几行了;另一个是借助GetScrollRange、GetScrollRange来知道当前滚动的位置。如果你只是要将光标移动到文本末尾,也可以使用EM_SCROLL消息,只要设置滚动的行数为总行数即可。EM_SCROLL消息的用法参考QA000476 "如何实现文本框的自动滚动"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio