Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Таблица символов

Автор myst, сентября 12, 2009, 14:27

0 Пользователи и 1 гость просматривают эту тему.

myst


myst


myst

Да, чтобы уникодовские символы слать, сборка программы должна быть уникодовской, естественно.

arseniiv

Цитата: myst от сентября 21, 2009, 10:36
WM_PASTE
Посмотрю потом...
Цитата: myst от сентября 21, 2009, 11:06
Проверил WM_CHAR на Блокноте. Работает.
А теперь найдите "поле ввода" в ворде... ::)

У окна может быть куча полей ввода. Как определять, в которое слать??

myst

Цитата: arseniiv от сентября 21, 2009, 12:42
А теперь найдите "поле ввода" в ворде... ::)
А я и не обещал, что будет просто. :)
Это уже другая задача. Главное, механизм на основе WM_CHAR работает.

myst

Цитата: arseniiv от сентября 21, 2009, 12:42
У окна может быть куча полей ввода. Как определять, в которое слать??
Надо подумать...

arseniiv

Случайно нет функции, подобной GetActiveWindow для подокон?
Кстати, хотя и глупый вопрос — WM_CHAR-сообщение поддерживает уникод, или там надо исхитряться?

Да уж, Win SDK мне в помощь, а лазить неохота.

myst

Цитата: arseniiv от сентября 21, 2009, 12:50
Кстати, хотя и глупый вопрос — WM_CHAR-сообщение поддерживает уникод, или там надо исхитряться?
Если используются уникодовские функции, символ имеет формат WCHAR. Если неуникодовские, CHAR.
Это всё есть в MSDN.

myst

Цитата: arseniiv от сентября 21, 2009, 12:50
Случайно нет функции, подобной GetActiveWindow для подокон?
Не понял замысел.


Я думаю, надо обрабатывать WM_SETFOCUS. Выбор символа в палитре переключает фокус ввода на её окно, как следствие, этому окну приходит сообщение WM_SETFOCUS, содержащее дескриптор окна, потерявшего фокус.

Тайльнемер

Здравствуйте.
Посмотрите, вам случайно не вот такого типа фигня нужна?

myst


Тайльнемер

Если такого типа, то её я сделал так:

При нажатии кнопки сначала вызываем SetActiveWindow с NULL в качестве параметра.
После чего — SendInput, где в структуре KEYBDINPUT:
dwFlags = KEYEVENTF_UNICODE,
wVk = 0,
wScan = код символа.

myst

Цитата: Тайльнемер от сентября 21, 2009, 22:09
SetActiveWindow с NULL в качестве параметра.
:what: А какой эффект этого вызова? Поведение этой функции с NULL не документировано... :???

arseniiv

В Delphi, как я понимаю, вместо него будет nil либо 0, смотря по типу... Позже пробовать буду. Спасибо, если сработает!

Скорее всего там 0 должен стоять - сделать активным видимо глобально-эксплорерное верхнее окно. На нём иногда рисуют GetDC(0)

Валентин Н

А почему у меня отображаются деванагари, грузинский итд, но в переключателе расладок их нет.

Т.е. могу видеть, но не могу напечатать. Чо за тупняк?
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

myst

Цитата: Тайльнемер от сентября 21, 2009, 22:09
После чего — SendInput, где в структуре KEYBDINPUT:
dwFlags = KEYEVENTF_UNICODE,
wVk = 0,
wScan = код символа.
А что за проблема с WM_CHAR была? Никак не вспомню. :(
С измерением времени вроде что-то, да?

myst

Цитата: arseniiv от сентября 22, 2009, 10:25
Скорее всего там 0 должен стоять - сделать активным видимо глобально-эксплорерное верхнее окно.
Дескриптор окна рабочего стола берётся функцией GetDesktopWindow().

myst


arseniiv

Цитата: myst от сентября 22, 2009, 10:53
Дескриптор окна рабочего стола берётся функцией GetDesktopWindow().
Я не о рабочем столе, который под окнами, а о прозрачном окне над всеми окнами. Разве это одно и то же? :donno:

myst

Цитата: arseniiv от сентября 22, 2009, 11:14
Я не о рабочем столе, который под окнами, а о прозрачном окне над всеми окнами. Разве это одно и то же? :donno:
:o Что это за окно? Никогда о таком не слышал. Если оно существует, должна быть штатная функция получения его дескриптора. Я, конечно, многое забыл за годы, но такого не припоминаю.

myst

Вы случайно не с контекстом устройства экрана попутали (GetDC(NULL))?

arseniiv

Цитата: Тайльнемер от сентября 21, 2009, 22:09
При нажатии кнопки сначала вызываем SetActiveWindow с NULL в качестве параметра.
После чего — SendInput, где в структуре KEYBDINPUT:
dwFlags = KEYEVENTF_UNICODE,
wVk = 0,
wScan = код символа.
У меня не описана константа KEYEVENTF_UNICODE. Она равна 3? И как заполнить поле "родительской" записи? В моём SDK не упоминаются эти функции и записи :( Ну вот...
Заполнил у себя кое-как, но не работает.

Цитата: myst от сентября 22, 2009, 11:26
Вы случайно не с контекстом устройства экрана попутали (GetDC(NULL))?
Могло. Напрямую с DC не работаю


myst


myst


Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр