Как вы можете управлять фронтом в mfc

Как изменить Z-порядок элементов управления в MFC во время разработки - т.е. я не могу использовать SetWindowPos или делать это во время выполнения - я хочу увидеть измененный z-порядок в дизайнере (даже если мне нужно прибегнуть к прямому редактированию кода .rc).

У меня есть диалог MFC, к которому я добавляю элементы управления. Если между краями элементов управления наложено совпадение, я хочу привести его к другому. В Windows Forms или WPF и т.д. Я могу отправить на передний план, отправить назад, отправить вперёд, отправить назад. Я не нахожу эти опции в MFC, и не могу сказать, как он определяет, что впереди, поскольку добавленный элемент управления часто находится за элементом управления, который был там ранее. Как я могу манипулировать Z-порядком в MFC? Даже если мне нужно напрямую манипулировать кодом файла .rc(т.е. Работать с дизайнером).

Ответы

Ответ 1

Я думаю, что управление впереди будет последним элементом управления, который встречается в файле rc. Другими словами, редактор диалога будет рисовать каждый элемент управления, поскольку он встречается сверху вниз в файле rc, перекрывая их при необходимости.

Вы можете отредактировать файл rc для их изменения или изменить порядок вкладок в редакторе, что делает то же самое, поскольку порядок табуляции также задается на основе порядка, в котором элементы управления находятся в файле. Насколько я знаю, MFC не предлагает каких-либо других способов перекрытия элементов управления во время разработки.

Ответ 2

В Visual Studio 6.0 выполните следующие действия.

Откройте диалоговый экран (в дизайнере)

Нажмите Ctrl + D

Заказы на вкладки будут показаны для каждого элемента управления

Начните кликать элементы управления в последовательности вкладок, которые вы ожидаете увидеть во время выполнения (т.е. элемент управления, по которому вы нажмете сначала, будет иметь порядок вкладок, равный 1 и так далее...)

Ответ 3

GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
                                        0, 0, 0, 0,
                                        SWP_NOMOVE | SWP_NOSIZE);

Ответ 4

Собственно, если вы хотите сделать это в редакторе ресурсов, вы можете просто отрезать элемент, а затем вставить его в качестве быстрого и грязного решения. Просто Ctrl-X, затем Ctrl-V.

Редактирование файла RC также будет работать.

Ответ 5

Вы можете использовать CWnd:: SetWindowPos() для управления порядком Z ваших элементов управления, не меняя их положения в родительском окне.

Ответ 6

GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)

Ответ 7

В редакторе ресурсов MSVC 2005 есть опция для установки порядка вкладок. В MSVC 2005 он находится в меню Формат, Заказ.

Порядок табуляции, отображаемый этим опцией меню, - это тот же порядок, в котором элементы управления записываются в файл ресурсов.