В проекте Win32 API C ++ у меня есть диалоговое окно с элементом управления вкладками (3 вкладки) и 3 диалоговыми окнами, которые являются дочерними элементами элемента управления вкладками. Я загружаю главное диалоговое окно с вкладками, используя DialogBoxParam, а дочерние диалоговые окна - из ресурсов с помощью CreateDialogParam. Главный диалог появляется с дочерними диалогами. Нажатие на вкладки показывает / скрывает правильный дочерний диалог, все работает нормально.
После поиска порядка порядка вкладок я нашел стиль WS_EX_CONTROLPARENT
, который нужно установить на элементе управления вкладками, чтобы вкладки работали в дочерних диалоговых окнах. Это прекрасно работает, за исключением одной проблемы: сам элемент управления вкладками никогда не фокусируется, поэтому я не могу перейти на вкладку, чтобы перейти на другую вкладку с помощью клавиатуры. Фокус клавиатуры проходит через дочерний диалог, к кнопкам в главном диалоге, а затем непосредственно обратно к дочернему диалогу и никогда не останавливается на самом элементе управления вкладками, поэтому я должен щелкнуть элемент управления вкладками, чтобы изменить вкладки. Это сводит меня с ума. Есть предложения?
Обновление: мне удалось обойти эту проблему, полностью забыв о WS_EX_CONTROLPARENT
, и сделав дочерние диалоговые окна родственными элементами вкладки. Только побочный эффект, кажется, больше мигает элементов управления во время перерисовки, но все равно хотел бы получить ответ, так как создание дочерних диалогов дочерних вкладок кажется чище.