Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 | 2 |

 

  Вопрос: Субкласнутый TextBox - борьба за точку Добавлено: 25.02.06 11:23  

Автор вопроса:  XPEHOMETP

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 16
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #16 Добавлено: 28.02.06 13:32
потому что я СРАЗУ фокус на текстбокс прописал
Нет, не поэтому, я тоже сделал сразу установку фокуса на текстбокс.

На pb нету исходника, только асмовый, но тут с комментариями нарисовал, думаю разберешься

;########################################################################
EditProc proc     hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    LOCAL buffer[256]       :BYTE

    .if     (uMsg==WM_SETFOCUS)
        invoke  SetWindowText, hWin, addr szPoint       ;записываем точку в текстбокс
        invoke  SendMessage, hWin, EM_SETSEL, 1, 1      ;устанавливаем курсор на позицию 1
    .endif
    
    ;необработанные сообщения передаём в дефолтную процедуру
    invoke  CallWindowProc, prevProc, hWin, uMsg, wParam, lParam
    
    ret

EditProc endp

;########################################################################
DlgProc proc  uses ebx  hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

    mov eax,uMsg
    .if eax==WM_INITDIALOG                                      ;инициализация диалога
        invoke  GetDlgItem, hWin, 1001
        mov     ebx,eax                                         ;определяем hWnd текстбокса по его ctlID
        invoke  SetWindowLong, ebx, GWL_WNDPROC, addr EditProc  ;устанавливаем сабклассинг-процедуру для текстбокса
        mov     prevProc,eax                                    ;запоминаем старый адрес в глобальной переменной
        invoke  SetFocus, ebx                                   ;устанавливаем фокус на текстбокс

    .elseif eax==WM_CLOSE
        invoke  EndDialog,hWin,0
    .else
        mov eax,FALSE
        ret
    .endif
    mov eax,TRUE
    ret
DlgProc endp

Ответить

Номер ответа: 17
Автор ответа:
 XPEHOMETP



Вопросов: 3
Ответов: 30
 Профиль | | #17 Добавлено: 01.03.06 09:55
До меня вдруг доперло, почему не прокатил самый первый вариант: с попыткой приставить точку слева от введенного текста. Просто когда обрабатывается первое сообщение %WM_CHAR, Текстбокс еще пустой! Туда просто ставится точка, а курсор остается на прежнем месте... В общем, я переделал по-простому: точка изначально не ставится, никаких посланий не отправляется, юзер что-то набирает, а при нажатии кнопки ОК проверяется, есть ли в наборе точка. Если нет, она приставляется слева. И все. Меня так больше устраивает: можно набрать что-нибудь вроде tyu.tух, тогда при приписывании модифицируется и расширение, и имя файла. Появляется такая дополнительная функциональность. А с посыланием мессаг потом как-нибудь разберусь. Спасибо за помощь!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам