RichEdit

Тема в разделе "WASM.WIN32", создана пользователем ZlovreD, 8 фев 2005.

  1. ZlovreD

    ZlovreD New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2004
    Сообщения:
    28
    Пишу GUI приложение.В качестве главного окна выступает диалоговое

    т.е вызываю invoke CreateDialogParam,[hInstance],IDD_DIALOG,NULL,addr WndProc,NULL

    В приложении используется RichEdit. С помощью редактора ресурсов кидаю его на форму...

    Получаю хандл RichEdit так:

    invoke CreateWindowEx,0,offset RichEditClass,offset AppName,\

    WS_VISIBLE or ES_MULTILINE or WS_CHILD or WS_VSCROLL or WS_HSCROLL,\

    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,\

    [hDlg],IDC_RED1,[hInstance],0

    mov [hwndRichEdit],eax





    Почему когда я вызываю invoke SendMessage,[hwndRichEdit],EM_SETBKGNDCOLOR,0,0FF0000h

    цвет в RichEdit не меняется и вообще ни одного сообщения не доходит?



    И как мне строку или данные из буфера допустим db "String",0 поместить в окно RichEdit?
     
  2. IceStudent

    IceStudent Active Member

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




    Забавно ты получаешь хэндл контрола, однако…



    Может, попробуешь invoke GetDlgItem,[hDlg],IDC_RICHEDIT1 ?
     
  3. ZlovreD

    ZlovreD New Member

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


    ОК Помогло :)



    Нашёл процедуру для записи в RichEdit:

    AddText proc lpString:lol: WORD

    mov eax,[hwndRichEdit]

    xor edx,edx

    lea ecx,[edx-1]

    push [lpString]

    push edx

    push EM_REPLACESEL

    push eax

    push edx

    push edx

    push EM_SCROLLCARET

    push eax

    invoke SendMessage,eax,EM_SETSEL,ecx,ecx

    call SendMessage

    call SendMessage

    ret

    AddText endp



    Вот только проблемка небольшая. При следующей записи не происходит перевод каретки. Как поправить?
     
  4. Alex3255

    Alex3255 New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    2
    Адрес:
    Russia
    можешь попробовать

    invoke SendMessage, <handle>,WM_VSCROLL, SB_BOTTOM,0

    это для сдвига лифта в самый низ



    Для вставки первода каретки сделай так

    invoke AddText,addr <sometext>

    invoke AddText,addr LineFeed



    где LineFeed db 0Dh,0Ah,0