Что то я совсем туплю
Как отловить событие клик на текст боксе?
Глобальная задача показать номер строки положения курсора, может быть кто это делал? Поделитесь опытом плиз!
Спасибо.
#COMPILE EXE
#INCLUDE "WIN32API.INC"
GLOBAL hDlg AS LONG
GLOBAL g_SubClassHandle AS LONG
%IDC_TEXTBOX = 100
%IDC_LBL = 200
%IDC_BTN = 300
'----------------------------------------------------------------
FUNCTION PBMAIN() AS LONG
LOCAL Result AS LONG
LOCAL hCtl AS LONG
DIALOG NEW PIXELS, 0, "TextBox Test",100,100,300,300, 0, 0 TO hDlg
CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX,"Edit Me!", 2,25,295,270,%WS_CHILD OR %WS_VSCROLL OR _
%ES_MULTILINE OR %ES_WANTRETURN OR %WS_BORDER OR %WS_VISIBLE, %WS_EX_CLIENTEDGE
CONTROL ADD LABEL, hDlg, %IDC_LBL, "*", 5,5,100,20
CONTROL ADD BUTTON, hDlg, %IDC_BTN, "exit", 245,5,50,20
IF ISTRUE g_SubClassHandle THEN
SetWindowLong hDlg, %GWL_WNDPROC, BYVAL g_SubClassHandle
g_SubClassHandle = 0
END IF
CONTROL HANDLE hDlg, %IDC_TEXTBOX TO hCtl
IF ISFALSE g_SubClassHandle THEN
g_SubClassHandle = SetWindowLong( hCtl, %GWL_WNDPROC, BYVAL CODEPTR(NewWindowProc))
END IF
'*******************
DIALOG SHOW MODAL hDlg , CALL DlgProc TO Result
'*******************
IF g_SubClassHandle <> 0 THEN
SetWindowLong hCtl, %GWL_WNDPROC, BYVAL g_SubClassHandle
g_SubClassHandle = 0
END IF
END FUNCTION
'----------------------------------------------------------------
CALLBACK FUNCTION DlgProc() AS LONG
SELECT CASE CB.MSG
CASE %WM_COMMAND
SELECT CASE CBCTL
CASE %IDC_BTN
DIALOG END CBHNDL
END SELECT
END SELECT
END FUNCTION
'----------------------------------------------------------------
FUNCTION NewWindowProc(BYVAL hWnd AS LONG, BYVAL wMsg AS LONG, BYVAL wParam AS LONG, BYVAL lParam AS LONG) AS LONG
LOCAL x AS LONG, y AS LONG
LOCAL srt AS STRING
IF wMsg = %WM_LBUTTONUP OR wMsg = %WM_KEYUP THEN
CONTROL HANDLE hDlg, %IDC_TEXTBOX TO x
SendMessage(x, %EM_GETSEL, BYVAL 0, VARPTR(y))
CONTROL GET TEXT hDlg, %IDC_TEXTBOX TO srt
x = PARSECOUNT(LEFT$(srt,y), $CRLF)
CONTROL SET TEXT hDlg, %IDC_LBL, "№ строки - " + STR$(x)
END IF
FUNCTION = CallWindowProc(BYVAL g_SubClassHandle, hWnd, wMsg, wParam, lParam)
END FUNCTION
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16