Пишу 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?
Забавно ты получаешь хэндл контрола, однако… Может, попробуешь invoke GetDlgItem,[hDlg],IDC_RICHEDIT1 ?
ОК Помогло Нашёл процедуру для записи в RichEdit: AddText proc lpStringWORD 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 Вот только проблемка небольшая. При следующей записи не происходит перевод каретки. Как поправить?
можешь попробовать invoke SendMessage, <handle>,WM_VSCROLL, SB_BOTTOM,0 это для сдвига лифта в самый низ Для вставки первода каретки сделай так invoke AddText,addr <sometext> invoke AddText,addr LineFeed где LineFeed db 0Dh,0Ah,0