17

如何在设计时在 MFC 中更改控件的 Z 顺序- 即我不能使用 SetWindowPos 或在运行时执行此操作 - 我想在设计器中查看更改后的 z 顺序(即使我不得不求助于直接 -编辑 .rc 代码)。

我有一个要向其中添加控件的 MFC 对话框。如果控件的边缘之间有重叠,我想将一个放在另一个的前面。在 Windows 窗体或 WPF 等中。我可以放在前面、放在后面、放在前面、放在后面。我在 MFC 中找不到这些选项,也无法确定它如何确定前面的内容,因为刚刚添加的控件通常位于之前存在的控件后面。如何在 MFC 中操作 Z 顺序?即使我必须直接操作 .rc 文件代码(即最终围绕设计器运行)。

4

7 回答 7

19

我认为前面的控件将是 rc 文件中出现的最后一个控件。换句话说,对话框编辑器将在 rc 文件中从上到下绘制每个控件,并在必要时将它们重叠。

您可以编辑 rc 文件以重新排序它们,或者您可以在编辑器中更改 Tab 键顺序,这样做的效果相同,因为 Tab 键顺序也是根据控件在文件中出现的顺序设置的。据我所知,MFC 在设计时没有提供任何其他方式来分层重叠控件。

于 2008-10-01T23:08:04.767 回答
19

在 Visual Studio 6.0 中执行以下操作。

打开对话框屏幕(在设计器视图中)

按 Ctrl + D

将为每个控件显示选项卡顺序

以您希望在运行时看到的 Tab 键顺序开始单击控件(即,您首先单击的控件将 Tab 键顺序设置为 1,依此类推...)

于 2009-04-22T05:39:20.697 回答
10
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
                                        0, 0, 0, 0,
                                        SWP_NOMOVE | SWP_NOSIZE);
于 2008-10-01T22:49:02.503 回答
9

实际上,如果您想在资源编辑器中执行此操作,您可以剪切该项目,然后将其粘贴回去,这是一种快速而肮脏的解决方案。只需 Ctrl-X 然后 Ctrl-V。

编辑 RC 文件也可以。

于 2008-10-01T22:54:47.777 回答
1

您可以使用CWnd::SetWindowPos()来控制控件的 Z 顺序,而无需更改它们在父窗口中的位置。

于 2008-10-01T22:49:08.773 回答
1

MSVC 2005对话框资源编辑器中,有一个设置选项卡顺序的选项。在MSVC 2005中,它位于“格式”、“标签顺序”菜单中。

此菜单选项显示的选项卡顺序与将控件写入资源文件的顺序相同。

于 2008-10-02T04:25:14.783 回答
1
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
于 2014-03-05T01:07:39.503 回答