![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| firelex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2003 Репутация: нет Всего: нет |
Доброго времени суток всем!
Проблема такая: есть "Хелло, ворлд!" - прога, которая чатет файл и выводит его содержимое построчно путем TextOut(...) пред очи юзера. Как сделать, чтобы на выведенный текст можно было "кликнуть" мышкой, т.е. чтобы при наведении он становился напр. красным, а при клике - появлялся диалог? |
|||
|
||||
| firelex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2003 Репутация: нет Всего: нет |
Пардон, забыл указать: прога написана в VC++ с MFC
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
Напимер так:
1) Вычисляешь регион в который входит текст; 2)При перемещении мыхи(cообщение WM_MOUSEMOVE) проверяешь входит ли позиция курсора в этот регион функцией PtInRqn; 3) Если курсор входит в этот регион то перерисовываешь текст нужным цветом. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
если еще и кликнул в этом регионе то делаешь домодал для твоего окна
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
А обезательно текст должен выводится TextOut. если можно на окне создать статик, то будет гораздол проще, по крайней мере не возится с регионами.
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
судя по всему едет речь про сди, на сколько мне кажется что гораздо проще перерисовывать, чем в таком окне статик делать
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| firelex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2003 Репутация: нет Всего: нет |
Спасибо, большое
Да это все в сди - по-этому проще TextOut(...) Я потихоньку сам тоже до этого додумался (регионы и т.д.) Только я запоминаю координаты региона (x1, y1, x2, y2), потом из них делаю CRgn. И вот тут начинается хохма - координаты, которые дает OnMouseMove(UINT nFlags, CPoint point) и запомненные координты на совпадают! Я имею ввиду, если я запомнил напр. (7000, -3000, 7900, -3200), то мышка возвращает "Х=<622> Y=<54>" |
|||
|
||||
| firelex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2003 Репутация: нет Всего: нет |
Как всегда - одни проблемы решились, другие нашлись.
Непонятки с координатами решились с помощью HIMETRICtoDP из класса CDC. Теперь такое вот: После того, как текст нарисовали (с SetBkMode(TRANSPARENT), потому как все это на картинке) и провели по нему мышкой - пытаемся его перерисовать другим цветом вот так
Выходит текст черный на белом фоне. Что здесь не так - не пойму. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
перед перерисовкой, нужно опять указать транспарент, и не получай дважды дс получи его раз и пользуйся....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| firelex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2003 Репутация: нет Всего: нет |
Е-мое!
Занес DC в переменную и все заработало... Спасибо |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |