Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в VC++ получить позицию курсора 
:(
    Опции темы
Alex
Дата 29.8.2002, 05:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть компонент Edit. На его EN_CHANGE я хочу считать позицию курсора.
То есть получить позицю строки, на которой происходит изменение строки
  Вверх
ENTiTY
Дата 29.8.2002, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.8.2002
Где: Москва

Репутация: нет
Всего: нет



Попробуй функцию
Цитата
CPoint CEdit::GetCaretPos()
(Что наследуется от CWnd класса)
А потом можно [/QUOTE]int CEdit::CharFromPos(CPoint point)[QUOTE].
PM MAIL   Вверх
ENTiTY
Дата 29.8.2002, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.8.2002
Где: Москва

Репутация: нет
Всего: нет



Блин, запутался с этими Quote :p
Ну я думаю ты понял  :D
PM MAIL   Вверх
Baa
Дата 29.8.2002, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Вот как я себе это представляю...хотя наверняка есть способ проще...
Код

void CEditDlg::OnEnChangeEdit1()
{
CPoint point = GetCaretPos ();
CString str;
TEXTMETRIC TextMetric;
CPaintDC dc (GetDlgItem (IDC_EDIT1));
GetTextMetrics (dc, &TextMetric);
str.Format ("Номер строки = %d", (point.y / TextMetric.tmAscent)+SendDlgItemMessage (IDC_EDIT1, EM_GETFIRSTVISIBLELINE));
SetDlgItemText (IDC_STATIC, str);
}





--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Temnozor
Дата 29.8.2002, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 27.6.2002
Где: Тюмень

Репутация: нет
Всего: нет



Проще всего запоминать содержимое Edit'а (в строке) и по EN_CHANGE сравнивать, что было до, что после.
А позиция курсора вряд ли поможет. Ведь юзверь, к примеру, может нажать Backspace или Delete. Как узнаешь тогда удалил он символ до курсора или после?
Так что лучше сравнивать содержимое до EN_CHANGE и после.
--------------------
Take a ride on, ride on, on your rotting horse on that deadly ground Take a ride, ride on, on your rotting horse with a pounding sound.
PM   Вверх
Alex
Дата 30.8.2002, 04:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо. Вы очень помогли
  Вверх
Alex
Дата 30.8.2002, 04:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне в задаче надо считывать последнее измененное слово. То есть то слово,
которое стоит перед курсором
  Вверх
Raven
Дата 24.9.2002, 17:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно проще
void CEditDlg::OnEnChangeEdit1()
{
CPoint point=GetCaretPos();
CString str;
str.Format ("Позиция = %d",LOWORD(m_ctrEdit.CharFromPos(point)));
MessageBox(str);
}
HIWORD - если нужен номер строки
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.