说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

文本框中光标位置的获得-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
文本框中光标位置的获得-VB资料
作者:陈锐
在很多的编辑软件中有这样一个功能,即当用户在编辑区中输入字符或者按动鼠标使得光标的位置改变时,在编辑软件下方的状态栏中就能显示出光标所在位置的行和列的值。下面就介绍如何用VB编程实现在文本框中的这一功能。
  首先,在Form中添加一个文本框(TextBox),将其MultiLine属性设置为True,以便输入多行文本;再在Form中添加两个标题栏(Label),以便显示光标位置;然后,在Form的代码窗口中添加程序中的代码。

Option Explici
Const EM_GETSEL = &HB0
Const EM_LINEFROMCHAR = &HC9
Const EM_LINEINDEX = &HBB

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

Public Sub GetCaretPos(ByVal TextHwnd As Long, LineNo As Long, ColNo As Long)

Dim I As Long, j As Long
Dim lParam As Long, wParam As Long
Dim k As Long

'首先向文本框传递EM_GETSEL消息以获取从起始位置到
'光标所在位置的字符数

I = SendMessage(TextHwnd, EM_GETSEL, wParam, lParam)
j = I / 2 ^ 16

'再向文本框传递EM_LINEFROMCHAR消息根据获得的字符
'数确定光标以获取所在行数

LineNo = SendMessage(TextHwnd, EM_LINEFROMCHAR, j, 0)
LineNo = LineNo + 1

'向文本框传递EM_LINEINDEX消息以获取所在列数

k = SendMessage(TextHwnd, EM_LINEINDEX, -1, 0)
ColNo = j - k + 1
End Sub

Private Sub Form_Load()
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub

Private Sub Form_Resize()
Text1.Width = Me.ScaleWidth
End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub

(程序)

  运行上面的程序,在TextBox中输入字符或者按控制键来移动光标时,你可以看到屏幕下面的Label中就能显示出的光标所在的位置。以上程序在Win 95,VB 5.0下运行通过。

Delphi系列的Y2K问题 Delphi下编程实现中文输入 Delphi用于读写的三种文件类型 Delphi之三十六计之输入处理篇 DELPHI中DFM文件与文本文件转换 Delphi中用于读写的文件类型 RichEdit的自动格式化-Delphi资料 RichEdit中实现查找功能-Delphi资料 表格上所有元件载入后的事件-Delphi资料 充分利用Windows API扩展Delphi函数 传递焦点的五种方法-Delphi资料 从 实 例 看 Delphi 4 中 的 动 态 得到Memo中当前的行列号-Delphi资料 改变RichEdit的游标位置-Delphi资料 回车代替Tab移动输入焦点-Delphi资料 获取Windows临时路径-Delphi资料 获取当前鼠标位置的类名和句柄-Delphi资料 检测存在打印机-Delphi资料 将BMP文件转换为JPG文件-Delphi资料 类似链接的效果-Delphi资料 利用COM技术实现外壳扩展的属性页-Delphi资料 留意DELPHI的命名规则 判断元件有哪一特定的属性-Delphi资料 全局热键-Delphi资料 让自己的程序防破解-Delphi资料 如何查找一个目录下的某些特定的文件-Delphi资料 如何在全屏幕显示一个AVI文件-Delphi资料 删除文本文件中的多余空格-Delphi资料 实现Hint的分行提示-Delphi资料 实现应用程序的文件拖放功能-Delphi资料 死循环的控制权转让-Delphi资料 如何生成这个SQL语句? 请教一个SQL语句问题 多个线程使用一个odbc连接,数据库操作时,是否要加锁? delphi中有沒有類似vb中iif的函數? 什么备份软件支持 UNIX WARE? delphi中有沒有類似vb中iif的函數? 页面跳转求教!!! 用MFC做的一个ActiveX,怎么样打包成CAB? [求助]如何进行智能系统开发? 求教SQL语法问题 一个问题,快速给分,先到先给,在线等待 征友 关于状态对象与无状态对象 如何修改DW->Grid网格线的颜色 求助!在PB中用过WINSOCK的看过来。 如何让DBGrid只显示时间而不显示日期? xp操作系统安装SqlServer2000???? 哎,搞了快一天了,这个删除的东东还是搞不出来,各位HELP ME? apache2.0.47和tomacat4.1整合的一个问题,用mod_jk-2.0.42.dll 急需<<短消息网关设备规范1.2>>,接分 动态设定数据窗口的返回参数(仅有15分) 主题:各位老兄,dtmf码怎么识别? Help Me!(求救!) vmware4.0.2build5589下安装redhat9的问题,非常奇怪 [求助]如何进系智能系统开发? 公司内用代理可以web,我可以用这个代理上MSN吗? 弄个了BBS玩,希望大家能捧捧场 关于LINUX内核模块的按需卸载及安装 DataGrid又一模板问题? 如何把很多.java程序打包到一个.cab文件里? 我在sql里面见了一个DTS 我不知道在c#里面怎么写程序执行它 我写的一个粒子系统屏保,大家看看不?其中有些技术问题,希望和大家讨论讨论。 菜鸟初学问题,别人给我的SQL Scripts File如何执行 菜鸟提问:如何进入xp的安全模式????? 我们企业要上ERP,交通施工行业,请推荐一些企业上ERP方面好一点的文章,不同行业也行,一篇给50分,在线等,多多益善! 初级问题:使用CDO时的cdoSendUserReplyEmailAddress,cdoSendEmailAddress这两项怎么设置? 请教菜鸟问题,在线等待 高分:"MyGina.dll"哪位高手有这个文件,用于屏蔽CTRL+ALT+DELETE?? 急!用odbc操作access时,可以添加,但不可以删除.(表的列比较多140个) 推荐几本比较好的适合初学的汇编教材 寻找对手,乒乓球,围棋,台球,本人在深圳大冲 初学类,不太明白其中关于const的使用。 请教:如何看/etc/wtmp的內容,打开都是乱码 一个字符串数组的问题??? 请问要怎样才能跟踪一个不出现窗口的系统进程直到结束? 急,如果一个CWnd类不作派生,怎么在它的包容wnd中,截获其Windows消息??? 偶尔找不到硬盘 寻求对,围棋,乒乓球,台球,本人在深圳大冲 请教` 请问我要在邮局汇款单上打印.... 怎么样用语句把ACCESS数据库里的数据导入DATAGIRD 呼朋引伴的引什么意思啊 呼朋引伴意思!/ 教小学一二年级数学中的百以内计算方法如题,诸如81-26+31=?像这种类似的数学题,怎样教小孩,小孩会比较容易吸收? 抖擞精神什么意思 编码器一转信号是什么意思 小学数学二年级下册36页12题? 呼朋引伴的意思 醉卧沙场君莫笑下一句,选自哪里 醉卧沙场君莫笑下一句 如图,有四种规格的玻璃若干块,先要做成一个无盖的长方体玻璃钢,选择合适的玻璃,并算出需要玻璃的总面积和这个玻璃缸的容积 一年有几个节气?她们相隔多久 媒体观察称延迟退休5年每月养老金可多媒体疑香山红叶没官方数据红 回应称黄河北廊坊学生打砸食堂续:学校垄断经营几比选举委员会称几比将无法按期举行大联合国报告称逃至黎巴嫩的叙利亚难民超学者撰文析中国经济发展:还会高速增长长沙机场收到危险品威胁 导致多航班延奶粉进药店价格更需亲民 消费者吁应设长沙机场“诈弹”威胁电话基本排除 航李娜连丢9局惨遭小威逆转 无缘年终总温州办公用房改革搁浅 官方表示执行起套牌“奥迪”牵出一起抢劫案南京真相青奥实体火炬后天在“滨江线”传递“下半场如何开始?”我为何反感国产剧的女性价值观全国道德模范是咋倒下的?民警制服扰民精神病人《绣春刀》荆奇强胆推荐嬉笑怒骂包裹着的民族苦难房门钥匙装满一提包,巨贪是怎样炼成的九霄仙冢最强相师造化仙府调教武侠无敌升级系统怒耸的硬条数据天神末世归来成人道永罪之城重生穿越季独墅湖旅游光福古镇旅游新国际博览中心旅游民俗博物馆旅游水帘峡旅游黄厝海滨旅游迎恩宫旅游狮头山旅游黄帝故里旅游药泉山旅游老舍茶馆旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘