Ограничение EditBox

Тема в разделе "WASM.BEGINNERS", создана пользователем Cigan, 31 авг 2006.

  1. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Возможно ли какинить функциями сделать чтобы в едит бох можно было вводить цифры и только некоторые буквы?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Сабклассинг. Читай Iczelion'a на сайте.
     
  3. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Код (Text):
    1. DlgProc PROC hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    2.    
    3.     mov     eax,uMsg
    4.     .if eax==WM_INITDIALOG
    5.         invoke GetDlgItem,hWin,IDC_AddrArray1
    6.         mov hArray,eax
    7.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    8.         invoke GetDlgItem,hWin,IDC_ArraySize1
    9.         mov hArray,eax
    10.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    11.         invoke GetDlgItem,hWin,IDC_AddrArray2
    12.         mov hArray,eax
    13.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    14.         invoke GetDlgItem,hWin,IDC_ArraySize2
    15.         mov hArray,eax
    16.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    17.         invoke GetDlgItem,hWin,IDC_AddrArray3
    18.         mov hArray,eax
    19.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    20.         invoke GetDlgItem,hWin,IDC_ArraySize3
    21.         mov hArray,eax
    22.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    23.         invoke GetDlgItem,hWin,IDC_AddrArray4
    24.         mov hArray,eax
    25.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    26.         invoke GetDlgItem,hWin,IDC_ArraySize4
    27.         mov hArray,eax
    28.         invoke SendMessage,hArray,EM_LIMITTEXT,8,0
    29.     .elseif eax==WM_COMMAND
    30.         mov     eax,wParam
    31.         ;and        eax,0FFFFh
    32.         .if ax==IDC_AddrArray1
    33.    
    34.         .elseif ax==IDC_ArraySize1
    35.             invoke GetDlgItemText,hWin,IDC_ArraySize1,addr StrArraySize1,8h
    36.         .elseif ax==IDC_AddrArray2
    37.             invoke GetDlgItemText,hWin,IDC_AddrArray2,addr StrAddrArray2,8h
    38.         .elseif ax==IDC_ArraySize2
    39.             invoke GetDlgItemText,hWin,IDC_ArraySize2,addr StrArraySize2,8h
    40.         .elseif ax==IDC_AddrArray3
    41.             invoke GetDlgItemText,hWin,IDC_AddrArray3,addr StrAddrArray3,8h
    42.         .elseif ax==IDC_ArraySize3
    43.             invoke GetDlgItemText,hWin,IDC_ArraySize3,addr StrArraySize3,8h
    44.         .elseif ax==IDC_AddrArray4
    45.             invoke GetDlgItemText,hWin,IDC_AddrArray4,addr StrAddrArray4,8h
    46.         .elseif ax==IDC_ArraySize4
    47.             invoke GetDlgItemText,hWin,IDC_ArraySize4,addr StrArraySize4,8h
    48.         .endif
    49.     .elseif eax==WM_CLOSE
    50.         invoke EndDialog,hWin,0
    51.     .else
    52.         mov     eax,FALSE
    53.         ret
    54.     .endif
    55.     mov     eax,TRUE
    56.     ret
    57.  
    58.     ret
    59.  
    60. DlgProc endp
    Как мне в этой обработке диалога поимать WM_CHAR чтобы можно было сделать сабклассинг
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
  5. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    посмотри - может, подойдет
     
  6. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Да спасибо обработка подошла. Сейчас буду пытаться понять. Вот такой вопрос а можно реализовать это через IsDialogMessage и еже сними?
     
  7. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Вобщем я разобрался. Только не понял одного момента:
    Код (Text):
    1.  mov wParam,eax
    2. hex_ok:  
    3.     invoke GetWindowLong,[hWin],GWL_USERDATA
    4.     leave
    5.     xchg eax,[esp]
    6.     push eax
    7.     jmp [CallWindowProc]
    Если можно растолкуй паподробней
     
  8. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    начиная с leave - это вместо
    Код (Text):
    1. invoke CallWindowProc eax,hWnd,uMsg,wParam,lParam
    2. ret
    (для 2к/хр даже не совсем корректно, но проблем не встречал)
    ---
    а нет, все корректно :)
    некорректно у меня было раньше (и еще проще) - я просто уже забыл...
    было так:
    Код (Text):
    1. leave
    2. jmp eax
    просто "SetWindowLong,eax,GWL_WNDPROC" может вернуть не адрес процедуры, а какой-то хэндл в каких-то случаях - в этом случае такая комбинация упадет.
     
  9. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    shoo, помоему только у тебя такая жесть в коде может встретится (в shoolib к примеру)
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    главное, шоб работало ;)
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    http://www.wasm.ru/forum/viewtopic.php?id=8094