你如何在设计时改变控件的Z顺序在MFC -即我不能使用SetWindowPos或做在运行时-我想看看在设计改变的Z轴顺序(即使我不得不诉诸指示-编辑.RC码)。
我有一个MFC对话框,其中我添加控件。 如果在控件的边缘之间的重叠,我想带一个到另一个的前面。 在Windows窗体或WPF,等我可以置于顶层,置于底层,上移一层,送回去。 我不觉得在MFC这些选项,也不是我可以告诉它如何确定是什么在前面,因为只是增加了一个控制往往是在那里以前是控制后面。 我怎么能操纵MFC Z-顺序? 即使我有直接操纵rc文件代码(即周围的设计师最终运行)。
我想在前面的控制将是发生在RC文件中的最后控制。 换句话说,因为它是从顶部遇到底部的RC文件,必要时它们重叠对话框编辑器将利用各自的控制。
您可以编辑RC文件重新排序,或者您可以更改编辑器,做同样的事情,因为选项卡顺序是根据发生在文件中的控制顺序上也设置Tab键顺序。 据我所知,MFC不提供在设计时分层重叠控制的任何其他方式。
在Visual Studio 6.0做到以下几点。
打开对话界面(在设计视图)
按Ctrl + d
的标签订单将被示出为每个控制
点击开始在你期望在运行时看到该标签顺序控制(即,在其上单击第一个将有选项卡顺序设置为1,所以在控制...)
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE);
其实,如果你想这样做在资源编辑器,你可以削减的项目,然后将其粘贴回作为一个快速和肮脏的解决方案。 只需按Ctrl-X,然后Ctrl-V。
编辑RC文件也可以工作。
您可以使用的CWnd :: SetWindowPos()来控制您的控件的Z顺序,不改变父窗口的地位。
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
在2005年MSVC对话框资源编辑器没有设置Tab顺序的选项。 2005年MSVC它是在格式,Tab顺序菜单中。
通过这个菜单选项中显示的选项卡顺序是在控制被写入到资源文件的顺序相同。