如何在MFC 设计时更改控件的Z顺序 - 即我不能使用SetWindowPos或在运行时执行此操作 - 我希望在设计器中看到更改的z顺序(即使我不得不求助于直接编辑.rc代码)。
我有一个MFC对话框,我正在添加控件。如果控件的边缘之间有重叠,我想将一个带到另一个的前面。在Windows窗体或WPF等我可以带到前面,发送到后面,前进,后退。我在MFC中找不到这些选项,也无法判断它如何确定前面的内容,因为刚刚添加的控件通常位于之前的控件之后。如何操作MFC中的Z顺序?即使我必须直接操作.rc文件代码(即在设计器周围运行)。
答案 0 :(得分:18)
在Visual Studio 6.0中执行以下操作。
打开对话框屏幕(在设计师视图中)
按Ctrl + D
将显示每个控件的标签顺序
开始单击您希望在运行时看到的选项卡顺序中的控件(即,您首先单击的控件将Tab键顺序设置为1,依此类推......)
答案 1 :(得分:15)
我认为前面的控件将是rc文件中发生的最后一个控件。换句话说,对话框编辑器将在rc文件中从上到下遇到每个控件,并在必要时重叠它们。
您可以编辑rc文件以对它们进行重新排序,或者您可以更改编辑器中的Tab键顺序,这也是相同的,因为Tab键顺序也是根据控件在文件中出现的顺序设置的。据我所知,MFC在设计时没有提供任何其他分层重叠控件的方法。
答案 2 :(得分:10)
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE);
答案 3 :(得分:6)
实际上,如果您想在资源编辑器中执行此操作,您只需剪切该项目,然后将其粘贴回快速而肮脏的解决方案。只需按Ctrl-X然后按Ctrl-V。
编辑RC文件也可以。
答案 4 :(得分:1)
您可以使用CWnd::SetWindowPos()来控制控件的Z顺序,而无需更改其在父窗口中的位置。
答案 5 :(得分:1)
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
答案 6 :(得分:0)
在 MSVC 2005 对话框资源编辑器中,可以选择设置Tab键顺序。在 MSVC 2005 中,可以在格式,标签顺序菜单中找到它。
此菜单选项显示的Tab键顺序与将控件写入资源文件的顺序相同。