News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

EM_SETLIMITTEXT and edit box

Started by RuiLoureiro, April 16, 2012, 08:47:22 PM

Previous topic - Next topic

RuiLoureiro

        What is the maximum number of characters that we can type in a
        edit box ? Anyone know ?
        How to limit it to 200 characters ?

        Thanks
EDIT:
          Seems i solved the problem with style

WS_VSCROLL|WS_HSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN

MichaelW

This sets the limit to 200 characters, and as you type displays the number of characters in the control, build as a console app.

;==============================================================================
    include \masm32\include\masm32rt.inc
;==============================================================================
IDC_EDIT equ 101
;==============================================================================
    .data
      hInstance dd 0
      hwndEdit  dd 0
      rc        RECT <>
    .code
;==============================================================================

DlgProc proc hwndDlg:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD

    SWITCH uMsg

        CASE WM_INITDIALOG

            invoke GetDlgItem, hwndDlg, IDC_EDIT
            mov hwndEdit, eax

            invoke SendMessage, hwndEdit, EM_GETLIMITTEXT, 0, 0
            printf("%d\t",eax)
            invoke SendMessage, hwndEdit, EM_SETLIMITTEXT, 200, 0
            invoke SendMessage, hwndEdit, EM_GETLIMITTEXT, 0, 0
            printf("%d\n",eax)

        CASE WM_SIZE

            invoke GetClientRect, hwndDlg, ADDR rc
            invoke MoveWindow, hwndEdit, 0, 0, rc.right, rc.bottom, TRUE

        CASE WM_COMMAND

            mov eax, EN_CHANGE
            shl eax, 16
            add eax, IDC_EDIT

            SWITCH wParam

                CASE eax

                    invoke GetWindowTextLength, hwndEdit
                    printf("%d\n",eax)

                CASE IDCANCEL

                    invoke EndDialog, hwndDlg, 0

            ENDSW

        CASE WM_CLOSE

            invoke EndDialog, hwndDlg, 0

    ENDSW

    xor   eax, eax
    ret

DlgProc endp

;==============================================================================
start:
;==============================================================================

    invoke GetModuleHandle, NULL
    mov   hInstance, eax

    Dialog "Test", \
           "MS Sans Serif",10, \
           WS_OVERLAPPED or WS_SYSMENU or DS_CENTER, \
           1,0,0,400,300,1024

    DlgEdit WS_BORDER or ES_MULTILINE or ES_WANTRETURN or \
            WS_VSCROLL or WS_HSCROLL or ES_AUTOVSCROLL or ES_AUTOHSCROLL, \
            0,0,0,0,IDC_EDIT

    CallModalDialog hInstance,0,DlgProc,NULL

    exit
;==============================================================================
end start
eschew obfuscation