Другие способы программного изменения порядка вкладок в диалоговом окне - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь отследить, почему некоторые из моих динамически создаваемых дочерних элементов управления в диалоге Windows вышли из строя, когда дело доходит до навигации по ним с помощью клавиши табуляции.При отсутствии каких-либо дополнительных действий с ними порядок должен определяться порядком, в котором они добавляются в диалог, но один конкретный тип дочернего элемента управления последовательно сортируется последним.

Я знаю, что В одну сторону для их переупорядочения используется SetWindowPos(), с использованием параметра hWndInsertAfter и без установки флага SWP_NOZORDER.Я вполне уверен, что исключил это как возможную причину этого переупорядочения.

Итак, для дальнейших указаний на это, а также просто для дальнейшего использования, кроме SetWindowPos(), чтодругие вызовы win32 могут изменить порядок существующих дочерних элементов управления в диалоговом окне?

1 Ответ

2 голосов
/ 14 июля 2011

Вот и все - в стандартном диалоге порядок вкладок - это просто порядок z, за исключением того, что вы можете контролировать, с чего начать в порядке z. Если у вас есть пара элементов управления, которые всегда заканчиваются в конце вашего порядка табуляции, что-то манипулирует порядком z, чтобы поместить их туда.

Если диалоговое окно или элементы управления нестандартны, порядок вкладок может управляться непосредственно WndProc. Как правило, это плохая идея , но, как известно, время от времени происходит.

...