Ограничение длины текста в Edit

Тема в разделе "WASM.WIN32", создана пользователем Gloomy, 27 сен 2004.

  1. Gloomy

    Gloomy New Member

    Публикаций:
    0
    Регистрация:
    29 май 2003
    Сообщения:
    48
    Адрес:
    Екатеринбург
    Очень тщательно перекопал форум и Гугль но не нашел ответа на сабжевый вопрос. Везде пишут про ограничение текста в RichEdit а мне надо в простом Edit. Можно конечно сравнивать длину текста, отрезать последний символ и возвращать строку обратно однако это не достойно Истинного Воина Дзена :)

    Заранее премного благодарен за ответы.
     
  2. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    The EM_SETLIMITTEXT message sets the text limit of an edit control. The text limit is the maximum amount of text, in TCHARs, that the user can type into the edit control. You can send this message to either an edit control or a rich edit control.



    For edit controls and Microsoft® Rich Edit 1.0, bytes are used. For Rich Edit 2.0 and later, characters are used.



    The EM_SETLIMITTEXT message is identical to the EM_LIMITTEXT message.





    Syntax





    To send this message, call the SendMessage function as follows.

    lResult = SendMessage( // returns LRESULT in lResult (HWND) hWndControl, // handle to destination control (UINT) EM_SETLIMITTEXT, // message ID (WPARAM) wParam, // = (WPARAM) () wParam; (LPARAM) lParam // = 0; not used, must be zero );

    Parameters



    wParam

    Specifies the maximum number of TCHARs the user can enter. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. This number does not include the null terminator.

    Rich edit controls: If this parameter is zero, the text length is set to 64,000 characters.



    Edit controls on Windows NT/2000/XP: If this parameter is zero, the text length is set to 0x7FFFFFFE characters for single-line edit controls or –1 for multiline edit controls.



    Edit controls on Windows 95/98/Me: If this parameter is zero, the text length is set to 0x7FFE characters for single-line edit controls or 0xFFFF for multiline edit controls.



    lParam

    This parameter is not used.

    Return Value



    This message does not return a value.
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Код (Text):
    1.   CASE uMsg OF
    2.     WM_INITDIALOG :
    3.       begin
    4.       ...........
    5.         SendDlgItemMessage(hDlg, IDC_EDIT1, EM_SETLIMITTEXT, 8, 0);
    6.       end;
     
  4. Gloomy

    Gloomy New Member

    Публикаций:
    0
    Регистрация:
    29 май 2003
    Сообщения:
    48
    Адрес:
    Екатеринбург
    Спасибо за ответы! Ошибка была в том что я писал:

    SendDlgItemMessage(hDlg, IDC_EDIT1, EM_SETLIMITTEXT, 0, 8);

    вместо:

    SendDlgItemMessage(hDlg, IDC_EDIT1, EM_SETLIMITTEXT, 8, 0);