在form中放一个textBox两个label
& H* U$ A: h5 s3 K! L) E Const EM_GETSEL = &HB0
( t5 |7 @2 O5 J! |% \, K Const EM_LINEFROMCHAR = &HC9' r- r1 i' ^0 d4 l0 y7 y( i
Const EM_LINEINDEX = &HBB
: v4 `+ ^" C/ }1 I; q4 _ Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _5 }+ a) g5 m0 v0 l7 T1 C' [
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _; V: I: ^8 u" e% `# U
lParam As Any) As Long/ b# W# c5 S) M9 D, v( l: [
Public Sub GetCaretPos(ByVal hwnd5 As Long, LineNo As Long, ColNo As Long)$ e( Y+ Q/ E I$ n5 y2 h4 N
Dim i As Long, j As Long+ Q1 u- ]/ A' J. |6 ~! f$ ~6 D
Dim lParam As Long, wParam As Long8 f G; ^$ ? `5 Z) l
Dim k As Long7 s& u" h% g) \4 U; q
i = SendMessage(hwnd5, EM_GETSEL, wParam, lParam)- l; h, d) M; b0 h1 F: }$ `* F* M
j = i / 2 ^ 16 ’取得目前Caret所在前面有多少个byte, V! b2 o/ L/ t3 l1 ]+ ]7 Z; @
LineNo = SendMessage(hwnd5, EM_LINEFROMCHAR, j, 0) ’取得前面有多少行
% y8 ?8 B& F, ]9 | LineNo = LineNo + 1$ D/ l/ }% m2 P
k = SendMessage(hwnd5, EM_LINEINDEX, -1, 0)
3 K- R; c0 `% Z e/ | ’取得目前caret所在行前面有多少个byte8 S. L% N( b! b+ y ^
ColNo = j - k + 1/ f- O3 _* C+ R/ {: h
End Sub9 o U/ h: L0 w! }$ F( o! T$ ~# E
Private Sub Form_Load()
5 u0 K( g5 F9 A2 z* s Dim LineNo As Long, ColNo As Long
" C- @# @8 w$ n k Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
6 h% \) E% o% `/ f& w# g1 g0 S2 ~ Label1.Caption = LineNo9 Y& @: W/ ]( @" u
Label2.Caption = ColNo! [' Z3 p' s9 S. G! f. y& P
End Sub' f( Q2 _8 C2 c! c/ y( {
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
. _* z7 L0 e0 e, g2 ? Dim LineNo As Long, ColNo As Long
9 E. _. ^" ?9 | Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
; ~- H6 {% x# v" P4 r8 m! i; S Label1.Caption = LineNo
+ g/ ]' p: _6 j' W0 _* }# d Label2.Caption = ColNo
2 j! Q+ V& O9 I6 h+ J6 x End Sub
/ P5 D9 l, B; H/ O0 p- { Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)" W0 \ p' r. b, {5 i2 N
Dim LineNo As Long, ColNo As Long6 N" j3 V& |( \! z o; j* g
Call GetCaretPos(Text1.hwnd, LineNo, ColNo)% S7 w' W0 I$ m# E* r" i. ~
Label1.Caption = LineNo
4 S% b) M6 A/ b5 J2 v) \3 v- X8 J- w. q Label2.Caption = ColNo4 B( l# U" r+ q X# G
End Sub |