Здравствуйте, TailWind, Вы писали:
TW>Есть в винде какие-нибудь функции предназначенные для рисования курсора?
TW>Идеально было бы конечно в DrawText передать номер после которого его нужно нарисовать TW>Но это я мечтаю TW>Есть что-нибудь похожее?
Что подразумевается под "рисование курсора"? System Caret или Mouse Pointer?
1) Если каретка, то это обычный битмап в конце концов. См на CreateCaret.
2) Если мышовый курсор, то его можно загрузить, разобрать на битмапки (сам курсор, и битовая маска для прозрачности). Ну и рисуй это дело где хочешь. См. на WinAPI LoadCursor + GetIconInfo.
TW>Ну или хотя бы положение определить?
Положение кого?
Спасибо за ответ
C>Что подразумевается под "рисование курсора"? System Caret или Mouse Pointer?
Каретка
C>1) Если каретка, то это обычный битмап в конце концов. См на CreateCaret.
А системный можно загрузить?
TW>>Ну или хотя бы положение определить? C>Положение кого?
Я текстовый редактор делаю
Никогда не имел дела с кареткой
Её нужно нарисовать в положенном месте
Потом она должна моргать
Хорошо будет если она стандартного вида
Я подумал нет ли функций это автоматизирующих?
Так то понятно: DT_CALCRECT части текста до каретки
Здравствуйте, 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, и нехай она сама мигает поверх отрисованного текста.
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, TailWind, Вы писали:
TW>>Нашёл рабочий пример TW>>https://docs.microsoft.com/ru-ru/windows/win32/menurc/using-carets
CEM>И каретка мигает? Всё, как положено? (тоже делаю текстовый редактор, запилил каретку сам, пока без мигания, чисто чтоб была)
Чего вы как дети блин… Сказал же уже: CreateCaret, ShowCaret, SetCaretPos — дальше винда сама всё сделает, и помигает и всё такое. Чего огород то городить?
В ссылке выше в примере показано, на какие сообщения надо реагировать на тему показать\скрыть каретку.
Здравствуйте, Carc, Вы писали:
C>Чего вы как дети блин… Сказал же уже: CreateCaret, ShowCaret, SetCaretPos — дальше винда сама всё сделает, и помигает и всё такое. Чего огород то городить? C>В ссылке выше в примере показано, на какие сообщения надо реагировать на тему показать\скрыть каретку.
Мы не дети, нам мала текущего функционала
Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь
CEM>Мы не дети, нам мала текущего функционала
Ну и в чем проблема то?
См. описание CreateCaret
BOOL CreateCaret(
HWND hWnd,
HBITMAP hBitmap,// <-- сюдемы смотрим вниматочно, вниматочно! Что туда передашь, то и получишь в виде каретки.int nWidth,
int nHeight
);
CEM>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь
Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем. Картинка по теме. Ссылка по теме.
Здравствуйте, Carc, Вы писали:
C>Ну и в чем проблема то? C>См. описание CreateCaret C>
C>
Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...)
CEM>>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь C>Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем. C>Картинка по теме. C>Ссылка по теме.
Хм, а не в своих как? Если не секрет.
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Carc, Вы писали:
C>>Ну и в чем проблема то? C>>См. описание CreateCaret C>>
C>>
CEM>Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...)
Такое у меня тоже есть, но я б не мешал это с кареткой…
Почему!?!
Где каретка знаем (в своем приложении, в своем коде), соответственно дернуть внешний код (свой же) через какую нить обобщеннную нотификацию "мол текущая строка поменялася" не проблема.
А вот внешний код, дернутный этой нотификицией уже сам решит чего делать: подсветить, сменить шрифт, еще чего.
Гибчее дизайн выйдет. Чистый паттерн наблюдатель. Одна сущность следит за сменой той же строки, а другая (внешняя) знает чего с этим делать (светить, менять шрифт, отослать большому брату).
Опять же гибкость. Таких наблюдателей может быть несколько (ну кагбэ делается в стиле "подписаться на события").
CEM>>>Например, я вставку/замещение (режим) подсвечиваю цветом каретки. И подозреваю, я на этом не остановлюсь C>>Я тоже подсвечиваю. Причем во всех приложениях, а не только в своем. C>>Картинка по теме. C>>Ссылка по теме. CEM>Хм, а не в своих как? Если не секрет.
Ну там много чего: API хукинг, Windows Accessible, инжект своего кода к соседям по сессии и иже с ними. Сравнительно честные способы отьема выделенного текста из соседних процессов, и прочия и прочия и прочия. Тот еще зоопарк получился.
Здравствуйте, Carc, Вы писали:
CEM>>Ок, согласен Но я ещё что-нибудь придумаю, чтобы так не делать (например, у меня, кроме каретки, сейчас подсвечивается вся строка, как в студии. Хотя, конечно, одно другому не мешает...) C>Такое у меня тоже есть, но я б не мешал это с кареткой…
Ну это я просто думаю вслух. А так, да, я не могу пока придумать ничего, кроме лени, почему мне не пользоваться штатными средствами.
CEM>>Хм, а не в своих как? Если не секрет. C>Ну там много чего: API хукинг, Windows Accessible, инжект своего кода к соседям по сессии и иже с ними. Сравнительно честные способы отьема выделенного текста из соседних процессов, и прочия и прочия и прочия. Тот еще зоопарк получился.
Ууу… я думал, там есть какие-нибудь волшебные ходы, специально для каретки.
А тогда вопрос: вставка своей каретки — это и есть цель какого-то приложения? Т.е. удобная подсветка раскладки во все окна, и всё такое?
CEM>Ууу… я думал, там есть какие-нибудь волшебные ходы, специально для каретки. CEM>А тогда вопрос: вставка своей каретки — это и есть цель какого-то приложения? Т.е. удобная подсветка раскладки во все окна, и всё такое?
Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.
Здравствуйте, Carc, Вы писали:
C>Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.
Добавь ещё время я делал часы, удобно, когда они перед глазами. Можно разные периоды подкрашивать разным цветом, у меня за 15 минут до дома — большим красным шрифтом
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Carc, Вы писали:
C>>Ну да, в этом вся цель + мелкие дополнительные плюшки, вроде перекодировки одной раскладки в другую, отображение всяких кнопок вроде CapsLock и прочия.
CEM>Добавь ещё время я делал часы, удобно, когда они перед глазами. Можно разные периоды подкрашивать разным цветом, у меня за 15 минут до дома — большим красным шрифтом
Спасибо. Интересная мысль!!!