Курсор для текста
От: TailWind  
Дата: 27.07.19 05:36
Оценка:
Есть в винде какие-нибудь функции предназначенные для рисования курсора?

Идеально было бы конечно в DrawText передать номер после которого его нужно нарисовать
Но это я мечтаю

Есть что-нибудь похожее?

Ну или хотя бы положение определить?
Re: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 27.07.19 06:00
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Есть в винде какие-нибудь функции предназначенные для рисования курсора?


TW>Идеально было бы конечно в DrawText передать номер после которого его нужно нарисовать

TW>Но это я мечтаю
TW>Есть что-нибудь похожее?
Что подразумевается под "рисование курсора"? System Caret или Mouse Pointer?
1) Если каретка, то это обычный битмап в конце концов. См на CreateCaret.

2) Если мышовый курсор, то его можно загрузить, разобрать на битмапки (сам курсор, и битовая маска для прозрачности). Ну и рисуй это дело где хочешь. См. на WinAPI LoadCursor + GetIconInfo.

TW>Ну или хотя бы положение определить?

Положение кого?
Aml Pages Home
Re[2]: Курсор для текста
От: TailWind  
Дата: 27.07.19 06:19
Оценка:
Спасибо за ответ

C>Что подразумевается под "рисование курсора"? System Caret или Mouse Pointer?

Каретка

C>1) Если каретка, то это обычный битмап в конце концов. См на CreateCaret.


А системный можно загрузить?


TW>>Ну или хотя бы положение определить?

C>Положение кого?
Я текстовый редактор делаю
Никогда не имел дела с кареткой

Её нужно нарисовать в положенном месте
Потом она должна моргать
Хорошо будет если она стандартного вида

Я подумал нет ли функций это автоматизирующих?
Так то понятно: DT_CALCRECT части текста до каретки
Отредактировано 27.07.2019 6:22 TailWind . Предыдущая версия .
Re[2]: Курсор для текста
От: TailWind  
Дата: 27.07.19 06:39
Оценка: 2 (1)
Нашёл рабочий пример
https://docs.microsoft.com/ru-ru/windows/win32/menurc/using-carets

Спасибо большое!
Re[3]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 27.07.19 07:25
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Спасибо за ответ


C>>Что подразумевается под "рисование курсора"? System Caret или Mouse Pointer?

TW>Каретка

C>>1) Если каретка, то это обычный битмап в конце концов. См на CreateCaret.


TW>А системный можно загрузить?

А думаете она (системная каретка) где-то есть в ресурах? Вряд ли... Винда ее судя по всему на лету создает через CreateCaret.


TW>>>Ну или хотя бы положение определить?

C>>Положение кого?
TW>Я текстовый редактор делаю
TW>Никогда не имел дела с кареткой

TW>Её нужно нарисовать в положенном месте

TW>Потом она должна моргать
TW>Хорошо будет если она стандартного вида
Ну и в чем проблема? Создали каретку через CreateCaret и движем ее куда надо через SetCaretPos

TW>Я подумал нет ли функций это автоматизирующих?

TW>Так то понятно: DT_CALCRECT части текста до каретки
А зачем ее рисовать-то? Рисуем текст как хотим, где должна быть каретка знаем сами, ставим каретку в это место через SetCaretPos, и нехай она сама мигает поверх отрисованного текста.
Aml Pages Home
Re[3]: Курсор для текста
От: CEMb  
Дата: 01.08.19 07:16
Оценка:
Здравствуйте, TailWind, Вы писали:

TW>Нашёл рабочий пример

TW>https://docs.microsoft.com/ru-ru/windows/win32/menurc/using-carets

И каретка мигает? Всё, как положено? (тоже делаю текстовый редактор, запилил каретку сам, пока без мигания, чисто чтоб была)
Re[4]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 01.08.19 07:24
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Здравствуйте, TailWind, Вы писали:


TW>>Нашёл рабочий пример

TW>>https://docs.microsoft.com/ru-ru/windows/win32/menurc/using-carets

CEM>И каретка мигает? Всё, как положено? (тоже делаю текстовый редактор, запилил каретку сам, пока без мигания, чисто чтоб была)

Чего вы как дети блин… Сказал же уже: CreateCaret, ShowCaret, SetCaretPos — дальше винда сама всё сделает, и помигает и всё такое. Чего огород то городить?
В ссылке выше в примере показано, на какие сообщения надо реагировать на тему показать\скрыть каретку.
Aml Pages Home
Re[5]: Курсор для текста
От: CEMb  
Дата: 02.08.19 05:45
Оценка:
Здравствуйте, Carc, Вы писали:

C>Чего вы как дети блин… Сказал же уже: CreateCaret, ShowCaret, SetCaretPos — дальше винда сама всё сделает, и помигает и всё такое. Чего огород то городить?

C>В ссылке выше в примере показано, на какие сообщения надо реагировать на тему показать\скрыть каретку.


Мы не дети, нам мала текущего функционала
Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь
Re[6]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 02.08.19 05:57
Оценка:
Здравствуйте, CEMb, Вы писали:


CEM>Мы не дети, нам мала текущего функционала

Ну и в чем проблема то?
См. описание CreateCaret
BOOL CreateCaret(
  HWND    hWnd,
  HBITMAP hBitmap,// <-- сюдемы смотрим вниматочно, вниматочно! Что туда передашь, то и получишь в виде каретки.
  int     nWidth,
  int     nHeight
);


CEM>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь

Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем.
Картинка по теме.
Ссылка по теме.
Aml Pages Home
Re[7]: Курсор для текста
От: CEMb  
Дата: 02.08.19 06:19
Оценка: 3 (1)
Здравствуйте, Carc, Вы писали:

C>Ну и в чем проблема то?

C>См. описание CreateCaret
C>
C>

Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...)

CEM>>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь

C>Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем.
C>Картинка по теме.
C>Ссылка по теме.
Хм, а не в своих как? Если не секрет.
Re[8]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 02.08.19 06:35
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Здравствуйте, Carc, Вы писали:


C>>Ну и в чем проблема то?

C>>См. описание CreateCaret
C>>
C>>

CEM>Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...)
Такое у меня тоже есть, но я б не мешал это с кареткой…

Почему!?!
Где каретка знаем (в своем приложении, в своем коде), соответственно дернуть внешний код (свой же) через какую нить обобщеннную нотификацию "мол текущая строка поменялася" не проблема.
А вот внешний код, дернутный этой нотификицией уже сам решит чего делать: подсветить, сменить шрифт, еще чего.
Гибчее дизайн выйдет. Чистый паттерн наблюдатель. Одна сущность следит за сменой той же строки, а другая (внешняя) знает чего с этим делать (светить, менять шрифт, отослать большому брату).

Опять же гибкость. Таких наблюдателей может быть несколько (ну кагбэ делается в стиле "подписаться на события").

CEM>>>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь

C>>Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем.
C>>Картинка по теме.
C>>Ссылка по теме.
CEM>Хм, а не в своих как? Если не секрет.
Ну там много чего: API хукинг, Windows Accessible, инжект своего кода к соседям по сессии и иже с ними. Сравнительно честные способы отьема выделенного текста из соседних процессов, и прочия и прочия и прочия. Тот еще зоопарк получился.
Aml Pages Home
Re[9]: Курсор для текста
От: CEMb  
Дата: 02.08.19 07:12
Оценка:
Здравствуйте, Carc, Вы писали:

CEM>>Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...)

C>Такое у меня тоже есть, но я б не мешал это с кареткой…
Ну это я просто думаю вслух. А так, да, я не могу пока придумать ничего, кроме лени, почему мне не пользоваться штатными средствами.

CEM>>Хм, а не в своих как? Если не секрет.

C>Ну там много чего: API хукинг, Windows Accessible, инжект своего кода к соседям по сессии и иже с ними. Сравнительно честные способы отьема выделенного текста из соседних процессов, и прочия и прочия и прочия. Тот еще зоопарк получился.
Ууу… я думал, там есть какие-нибудь волшебные ходы, специально для каретки.
А тогда вопрос: вставка своей каретки — это и есть цель какого-то приложения? Т.е. удобная подсветка раскладки во все окна, и всё такое?
Re[10]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 02.08.19 08:34
Оценка:
Здравствуйте, CEMb, Вы писали:


CEM>Ууу… я думал, там есть какие-нибудь волшебные ходы, специально для каретки.

CEM>А тогда вопрос: вставка своей каретки — это и есть цель какого-то приложения? Т.е. удобная подсветка раскладки во все окна, и всё такое?
Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.
Aml Pages Home
Re[11]: Курсор для текста
От: CEMb  
Дата: 02.08.19 08:51
Оценка: 6 (1)
Здравствуйте, Carc, Вы писали:

C>Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.


Добавь ещё время я делал часы, удобно, когда они перед глазами. Можно разные периоды подкрашивать разным цветом, у меня за 15 минут до дома — большим красным шрифтом
Re[12]: Курсор для текста
От: Carc Россия https://vk.com/gosha_mazov
Дата: 02.08.19 09:10
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Здравствуйте, Carc, Вы писали:


C>>Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.


CEM>Добавь ещё время я делал часы, удобно, когда они перед глазами. Можно разные периоды подкрашивать разным цветом, у меня за 15 минут до дома — большим красным шрифтом

Спасибо. Интересная мысль!!!
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.