Как устроена виртуальная клавиатура в Винде?

Flying-home
Дата: 09.10.2017 10:19:30
Как вообще получается, что форма принимает клики от пользователя, но при этом в фокусе остается контрол на другой форме? Или не остается?
Надо написать нечто подобное, да еще чтоб оно не конфликтовало с имеющейся виндовой виртуальной клавой.
YuRock
Дата: 09.10.2017 11:52:56
Flying-home
Как вообще получается, что форма принимает клики от пользователя, но при этом в фокусе остается контрол на другой форме?
Никак. Эта форма-клавиатура, на которой фокус, перенаправляет клики на свою "главную" форму.
Или другой пример - комбобоксу открытому его "главное" окно клавиатуру шлет.
wadman
Дата: 09.10.2017 12:08:26
Flying-home
Дата: 09.10.2017 12:54:42
YuRock
Flying-home
Как вообще получается, что форма принимает клики от пользователя, но при этом в фокусе остается контрол на другой форме?
Никак. Эта форма-клавиатура, на которой фокус, перенаправляет клики на свою "главную" форму.
Или другой пример - комбобоксу открытому его "главное" окно клавиатуру шлет.

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

wadman
+ https://www.codeproject.com/Articles/32563/Virtual-On-Screen-Keyboard-Example

Ща гляну.
Dimitry Sibiryakov
Дата: 09.10.2017 13:41:00
Flying-home
Значит, окно экранной клавиатуры реагируя на мышь, не стало активным. Вот, мне интересно, как.

https://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx
WS_EX_TOOLWINDOW не получает фокуса.
Flying-home
Дата: 09.10.2017 13:43:58
YuRock
Дата: 10.10.2017 12:29:24
Flying-home
Комбобокс не схлопнулся, значит, окно проги активность не потеряла и комбобокс фокуса не потерял.
Комбобокс фокуса и не имел. Это неактивируемое окно (не помню какой стиль, какой-то ws_ex_). Фокус все время был на его родителе и перенаправлял ему события.
До тех пор, пока ты клавиатуру не открыл. Тогда она активной стала, но пеиенапрсвляла события на форму, которая - на комбобокс.
Flying-home
Дата: 10.10.2017 14:48:30
YuRock,

Ты уверен, что знаешь, что пишешь?
YuRock
Дата: 10.10.2017 16:06:21
Flying-home
YuRock,

Ты уверен, что знаешь, что пишешь?
Я делал с нуля свой комбобокс и другие контролы, которые работают по такому принципу.