Клик на текст боксе

Раздел посвящен программированию с использованием Power Basic.
Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Клик на текст боксе

Сообщение Димитрий » 09.06.2011 (Чт) 7:36

Что то я совсем туплю :(
Как отловить событие клик на текст боксе?
Глобальная задача показать номер строки положения курсора, может быть кто это делал? Поделитесь опытом плиз!
Спасибо. :)

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Клик на текст боксе

Сообщение bon818 » 23.06.2011 (Чт) 3:26


Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Re: Клик на текст боксе

Сообщение Димитрий » 23.06.2011 (Чт) 11:41

Не плохой ресурс, жаль что нет таких на русском :?
Но задачу так и не могу решить. Единственное, что могу сделать, отслеживать положение курсора в текст боксе по таймеру.
Некрасиво :cyclops:

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Re: Клик на текст боксе

Сообщение Димитрий » 24.06.2011 (Пт) 10:38

Сделал так, прошу сильно не бить ногами :D
Код: Выделить всё
#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


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

    TopList