Три вопроса о редакторе?

У меня есть три вопроса об управлении полем редактирования в WINAPI (я не могу найти информацию об этом в msdn) 1. Как отключить перемещение курсора ввода с помощью мыши, стрелок, возврата в поле редактирования? Я хочу сделать ввод как в командной строке в dos, но без пробела.

  1. Могу ли я написать часть текста красным цветом, а другую — синим?

  2. Как написать в элемент управления editbox из другого потока?


person piotrek    schedule 14.05.2010    source источник


Ответы (1)


  1. Сделайте его доступным только для чтения (ES_READONLY) и вручную перехватывайте нажатия клавиш и добавляйте только те, которые хотите.
  2. Нет, для этого вам нужно использовать класс RICHEDIT и использовать RTF. (Вы могли бы нарисовать обычное окно EDIT, но это было бы не очень весело)
  3. SendMessage с WM_SETTEXT (или EM_SETTEXTEX / EM_REPLACESEL, если вы используете RICHEDIT)

Почему бы не использовать консоль?

person Alex K.    schedule 14.05.2010
comment
Он должен быть в окне :/ Для ответа 1. - Есть ли другой вариант вместо ES_READONLY и перехвата нажатий клавиш? Я спрашиваю, потому что в моем языке есть много комбинаций на клавиатуре для создания различных символов. - person piotrek; 14.05.2010
comment
Вы можете перехватить WM_CHAR и проверить его значение, отбрасывая при необходимости. - person Alex K.; 14.05.2010
comment
Спасибо. Могу ли я отключить выбор мыши в RichEdit? Я добавляю char с этим кодом: SendMessage(richEdit, EM_SETSEL, - 1, 0); SendMessage(richEdit,EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf); SendMessage(richEdit, EM_REPLACESEL, (WPARAM)0, (LPARAM)(LPSTR)msg); Но когда я нажимаю мышью на richedit, этот код не работает:/ - person piotrek; 14.05.2010
comment
Вы можете отказаться от сообщений мыши, WM_LBUTTONDOWN и др. - person Alex K.; 14.05.2010