Как программно изменить порядок табуляции в диалоговом окне Win32?

StackOverflow https://stackoverflow.com/questions/50236

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

  1. В меню Вид выберите Порядок вкладок.
  2. Выберите Назначить в интерактивном режиме.
  3. Дважды щелкните поле порядок вкладок рядом с элементом управления, который вы хотите сделать первым элементом управления в порядке вкладок. первый элемент управления в порядке вкладок.
  4. Щелкните поле порядок вкладок для каждого из других элементов управления.
  5. Щелкните в любом месте формы, чтобы сохранить изменения и выйти из режима "Порядок вкладок ", или нажмите ESC, чтобы выйти из режима "Порядок вкладок" без сохранения изменений .
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top