如何在mfc中将控件带到前面

Tim*_*son 15 mfc visual-studio visual-c++

如何在设计时更改MFC 控件的Z顺序- 即我不能使用SetWindowPos或在运行时执行此操作 - 我希望在设计器中看到更改的z顺序(即使我必须求助于 -编辑.rc代码).

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

Sen*_*hil 18

在Visual Studio 6.0中,执行以下操作.

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

按Ctrl + D.

将显示每个控件的Tab键顺序

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

  • @Tim Erickson:在Visual Studio选项卡中索引*是*z-index. (5认同)
  • 问题涉及视觉z-index,*not*tab index. (2认同)

rya*_*n_s 15

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

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


Ada*_*rce 10

GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
                                        0, 0, 0, 0,
                                        SWP_NOMOVE | SWP_NOSIZE);
Run Code Online (Sandbox Code Playgroud)

  • 该问题在运行时指定"在设计时"*不*. (2认同)

Ada*_*rce 7

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

编辑RC文件也可以.