Часто мне нужно добавить элемент управления в диалог после того, как диалог был сгенерирован с помощью диалогового шаблона и CreateDialogIndirect. В этих случаях порядок вкладок задается шаблоном диалога, и нет очевидного способа изменить порядок вкладок, включив вновь созданный элемент управления.Как программно изменить порядок вкладок в диалоговом окне Win32?
9
A
ответ
13
Недавно я обнаружил, что вы можете использовать SetWindowPos для этого. Определите, какой контроль, после которого вы хотите вставить новый элемент управления в закладке, чтобы затем использовать SetWindowPos так:
SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
Это меняет Z-порядок управления, который, в свою очередь, устанавливает порядок табуляции.
0
Я знаю, что это старый вопрос, но вот как это сделать во время компиляции (что является предпочтительным в подавляющем большинстве случаев): http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx
Мой любимый метод:
- От в меню «Вид» выберите «Заказ табуляции».
- Выберите Assign Interactively.
- Дважды щелкните поле заказа табуляции рядом с элементом управления, которым вы хотите быть первым элементом управления в порядке вклада.
- Щелкните по кнопке «Заказ» для каждого из других элементов управления.
- Щелкните в любом месте формы, чтобы сохранить изменения, и выйдите из режима табуляции или нажмите ESC, чтобы выйти из режима заказа табуляции, не сохраняя свои изменения .
Это хорошо работает. В CWnd есть эквивалент MFC: newControl.SetWindowPos (oldControl, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); – persiflage 2012-12-14 17:39:02
MFC lolololololol – 2017-09-23 03:25:38