2008-09-08 4 views
9

Часто мне нужно добавить элемент управления в диалог после того, как диалог был сгенерирован с помощью диалогового шаблона и CreateDialogIndirect. В этих случаях порядок вкладок задается шаблоном диалога, и нет очевидного способа изменить порядок вкладок, включив вновь созданный элемент управления.Как программно изменить порядок вкладок в диалоговом окне Win32?

ответ

13

Недавно я обнаружил, что вы можете использовать SetWindowPos для этого. Определите, какой контроль, после которого вы хотите вставить новый элемент управления в закладке, чтобы затем использовать SetWindowPos так:

SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); 

Это меняет Z-порядок управления, который, в свою очередь, устанавливает порядок табуляции.

+1

Это хорошо работает. В CWnd есть эквивалент MFC: newControl.SetWindowPos (oldControl, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); – persiflage 2012-12-14 17:39:02

+0

MFC lolololololol – 2017-09-23 03:25:38

0

Я знаю, что это старый вопрос, но вот как это сделать во время компиляции (что является предпочтительным в подавляющем большинстве случаев): http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx

Мой любимый метод:

  1. От в меню «Вид» выберите «Заказ табуляции».
  2. Выберите Assign Interactively.
  3. Дважды щелкните поле заказа табуляции рядом с элементом управления, которым вы хотите быть первым элементом управления в порядке вклада.
  4. Щелкните по кнопке «Заказ» для каждого из других элементов управления.
  5. Щелкните в любом месте формы, чтобы сохранить изменения, и выйдите из режима табуляции или нажмите ESC, чтобы выйти из режима заказа табуляции, не сохраняя свои изменения .