Простое текстовое поле Windows очень удивило меня сегодня.
У меня есть два несвязанных текстовых поля внутри приложения.Я могу ввести любое текстовое поле и переключить фокус, нажав на них.Затем происходит какое-то событие X, которое я не могу описать здесь по причинам, указанным ниже.После того, как это событие происходит, два текстовых поля становятся «запутанными» почти квантовым способом.
Скажем, текстовое поле A было сфокусировано до появления X.Когда я нажимаю текстовое поле B, чтобы ввести какой-либо текст, новый текст появляется в текстовом поле A, тогда как мигающий курсор счастливо перемещается в текстовом поле B через пустоту, как если бы текст был там.
Никакое количество нажатий на текстовые поля не может решить эту проблему.Курсор всегда будет оставаться в B, тогда как текст всегда будет идти к A.
Шпионаж сообщения показывает, что после события X текстовые поля теряют способность терять или получать фокус.Когда я нажимаю на B, WM_LOSE_FOCUS не приходит к A, а WM_SET_FOCUS не приходит к B. (Прямоугольники и видимость полей в порядке.)
То же самое происходит в Windows XP и Windows 7.
Теперь событие X: это большое событие в сторонней библиотеке пользовательского интерфейса, которое я не могу своевременно перепроектировать.(А именно, закрепление панели в wxAUI.)
Я уверен, что это поведение является результатом неправильных вызовов WinAPI к текстовым полям (вход мусора - выход мусора).Я хотел бы знать, что может вызвать такое «отключение текстового поля», чтобы знать, с чего начать поиск ошибки.
Спасибо!