js 获取文本中光标的位置

js 获取文本中光标的位置,第1张

关键字是selectionStart和selectionEnd 以及setCaretPos()函数

可以再去搜搜

div中是没有光标的, textfield中可以使用selectionStart获得光标位置

结果:

DeskTopPos:

X: 680 Y: 592

ClientPos:

X: 586 Y: 444

请按任意键继续

代码:

#include <stdioh>

#include "stdlibh"

#include <Windowsh>

main()

{

HWND hConsole = FindWindow("ConsoleWindowClass", NULL);

POINT pt;

GetCursorPos(&pt);

printf("DeskTopPos:\nX:%4i Y:%4i\n", ptx, pty);

ScreenToClient(hConsole, &pt);

printf("ClientPos:\nX:%4i Y:%4i\n", ptx, pty);

fflush(stdin);

system("pause");

}

函数连接:

>

有两种方式:

1、直接向窗口发消息,获取窗体句柄,然后SendMessage,这种方法麻烦在分析窗口句柄,如果你只向某一个程序写的话这种是比较通用的,如果换个程序的话就需要重新找句柄,但是窗体位置的变化对你没有影响,因为直接通过句柄+消息;

2、SetFoucus ,设置光标,然后激活窗体,写入,这种需要先知道窗体的位置,窗体位置变了就没用了。

你看下外挂编程吧,这是比较初级的,一开始就有介绍

1要获取鼠标在屏幕上的 位置代码为:

Point pt = ControlMousePosition;

2获取鼠标在窗体上的位置可根据单击窗体事件获得,在事件中写上:

private void Form1_MouseClick(object sender, MouseEventArgs e)

{

Point p = new Point(eX, eY);

}

在很多的编辑软件中有这样一个功能,即当用户在编辑区中输入字符或者按动鼠标使得光标的位置改变时,在编辑软件下方的状态栏中就能显示出光标所在位置的行和列的值。下面就介绍如何用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(Text1hwnd, LineNo, ColNo)

Label1Caption = LineNo

Label2Caption = ColNo

End Sub

Private Sub Form_Resize()

Text1Width = MeScaleWidth

End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)

Dim LineNo As Long, ColNo As Long

Call GetCaretPos(Text1hwnd, LineNo, ColNo)

Label1Caption = LineNo

Label2Caption = 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(Text1hwnd, LineNo, ColNo)

Label1Caption = LineNo

Label2Caption = ColNo

End Sub

(程序)

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

以上就是关于js 获取文本中光标的位置全部的内容,包括:js 获取文本中光标的位置、C语言控制台程序中如何获取光标位置就是(x, y)坐标。、C#下如何获取光标的位置并在光标处输入字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9340464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存