Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 26.01.2010
Сообщений: 3

Установка Карета в конец текста в RichEdit

27.01.2010, 16:58. Показов 1498. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я пишу программу в VS2008, использую WINAPI.
Проблема собственно в том, что я не могу переставить карет в конец текста. Я использую RichEdit20 форму.
Приведу кусок кода для полной картины:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SETTEXTEX tmp_buf;
CHARFORMAT Fchar;
char  buf[1000];
LRESULT lR;
 
int СScreen::LogWnd (char *buff, int color)
{
    hRich=GetDlgItem(main_hwnd, IDC_RICHEDIT21);
    Fchar.cbSize = sizeof(CHARFORMAT);
    lR = SendMessage(hRich, EM_GETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&Fchar);
    Fchar.dwEffects = 0;
    Fchar.crTextColor = color;
    lR = SendMessage(hRich, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&Fchar);
    tmp_buf.flags = ST_SELECTION;
    tmp_buf.codepage = CP_ACP;
     lR = SendMessage(hRich, EM_SETTEXTEX, (WPARAM)&tmp_buf, (LPARAM)buff);
 return 0;
};
Так вот, для отправки текста я использую процедуру SendMessage
lR = SendMessage(hRich, EM_SETTEXTEX, (WPARAM)&tmp_buf, (LPARAM)buff);
с параметрами структуры (SETTEXTEX) tmp_buf :
tmp_buf.flags = ST_SELECTION;
tmp_buf.codepage = CP_ACP;
Любой редактированный текст засовуется отлично до того момента, пока карет находится в конце текста. Как только пользователь при помоши мышки или клавиш (вверх,в низ, в лево в право) не меняет положение корет(курсора), то после этого весь текст начинает вставляется с данной позиции.
Пробовал менять и комбенировать флаги ST_SELECTION, ST_KEEPUNDO, ST_DEFAULT в структуре tmp_buf, но ето не помогло,
Подскажите, какое-то решение, за ранее Благодарен .

Добавлено через 1 минуту
Народ что нету ни каких идей?
Подскажите хотябы направление в котором нужно копать.

Добавлено через 6 часов 18 минут
После дня проб и ошибок, я наконецто нашел болие менее нормальный способ установки карета в конец текста.
вот кусок кода который у меня получился :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HWND hRich;
SETTEXTEX Tformat;
CHARFORMAT Tproperty;
GETTEXTLENGTHEX Tleng;
LRESULT lR;
 
 
int OnScreen (HWND hwnd , char *buff, int color)
{
    Tleng.codepage = CP_ACP; 
    lR = SendMessage(hwnd, EM_GETTEXTLENGTHEX , (WPARAM)&Tleng, 0); 
    SendMessage(hwnd, EM_SETSEL , (LPARAM)lR, (LPARAM)lR); 
 
    Tproperty.cbSize = sizeof(CHARFORMAT);
    lR = SendMessage(hwnd, EM_GETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&Tproperty);
    Tproperty.dwEffects = 0;
    Tproperty.crTextColor = color;
    lR = SendMessage(hwnd, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&Tproperty);
    
    Tformat.flags = ST_SELECTION;
    Tformat.codepage = CP_ACP;
    lR = SendMessage(hwnd, EM_SETTEXTEX, (WPARAM)&Tformat, (LPARAM)buff);
 
    return 0;
};
стока 5 объявляет структуру,
строка 11 выставляет флаг указывающий на вид текста (в данном случае ANSI)
строка 12 в переменную lR выводит длину текста, который находится в RichEdit
Строка 13 устанавливает каретку на последний симол
Примечание: сообщение "EM_SETSEL" вобще-то используется для выдиления текста, но более лучшего способа перевода корета я не придумал. Если ктото знает лучший способ, пишите, буду очень признателен.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.01.2010, 16:58
Ответы с готовыми решениями:

RichEdit добавление текста в начало и конец строки
Здравствуйте. Требуется ввести в RichEdit произвольный текст, после нажатия на кнопку в начале и конце каждой строки добавляется...

В поле RichEdit удалить html-теги; при вставке в RichEdit замена старого текста на новый
Всем привет! помогите пожалуйста с написание кода на две процедуры : - В поле RichEdit удалить html-теги; - при вставке в RichEdit...

RichEdit и конец строки
Необходимо менять размеры шрифта RichEdit по кнопке, но из-за этого будет сбиваться признаки начала и конца строки. Что делать в этом...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2010, 16:58
Помогаю со студенческими работами здесь

RichEdit добавить в конец из потока
Имеется RichEdit в котором уже есть инфа и имеется инфа в переменной потока Stream : TMemoryStream *Stream = new TMemoryStream ; ...

Установка отображения нужной строки RichEdit
Программа выдает отчет в RichEdit. В RichEdit есть полоса прокрутки. Текст отчета большой из RichEdit отображает низ отчета. Смотрится не...

(Исправление/добавление) текста в textBox. Курсор ввода уходит в конец текста
Добрый день! Написал текст в textBox, хочу исправить один или два символа в середине текста или добавить слово, устанавливаю курсор и...

Цвет текста в RichEdit
Приветствую. Я добавляю в RichEdit построчно текст, используя код RichEdit1->Lines->Add(L"Hello!"). Требуется вставляемый текст делать...

Выделение текста в RichEdit
Вообщем есть 2 RichEdit, я их сравниваю между собой, если есть различия то в счётчик +1 (счётчик это k), если счётчик не равен 0, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru