Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在mfc中将控件置于前端_Visual Studio_Visual C++_Mfc - Fatal编程技术网

Visual studio 如何在mfc中将控件置于前端

Visual studio 如何在mfc中将控件置于前端,visual-studio,visual-c++,mfc,Visual Studio,Visual C++,Mfc,如何在设计时更改MFC中控件的Z顺序?即,我不能使用SetWindowPos或在运行时执行此操作。我希望在设计器中看到更改的Z顺序(即使我必须直接编辑.rc代码) 我有一个要添加控件的MFC对话框。如果控件的边之间存在重叠,我希望将一个控件置于另一个控件的前面。在Windows窗体或WPF等中,我可以带到前面、发送到后面、带到前面、发送回前面。我在MFC中找不到这些选项,也不知道它是如何确定前面是什么,因为刚刚添加的控件通常位于前面的控件后面。如何在MFC中操纵Z顺序?即使我必须直接操作.rc文

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


我有一个要添加控件的MFC对话框。如果控件的边之间存在重叠,我希望将一个控件置于另一个控件的前面。在Windows窗体或WPF等中,我可以带到前面、发送到后面、带到前面、发送回前面。我在MFC中找不到这些选项,也不知道它是如何确定前面是什么,因为刚刚添加的控件通常位于前面的控件后面。如何在MFC中操纵Z顺序?即使我必须直接操作.rc文件代码(即,在设计器中结束运行)。

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

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


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


您可以编辑rc文件以对其进行重新排序,也可以在编辑器中更改选项卡顺序,因为选项卡顺序也是基于控件在文件中出现的顺序设置的,因此执行相同的操作。据我所知,MFC在设计时不提供任何其他分层重叠控件的方法。

MSVC 2005对话框资源编辑器中,有一个设置选项卡顺序的选项。在MSVC 2005中,可在格式、选项卡顺序菜单中找到它


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

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

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

按Ctrl+D组合键

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


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

问题涉及的是视觉z索引,而不是制表符索引。@谢谢您指出,4年前我回答这个问题时也有同样的想法:)但问题是如何在设计时执行Z顺序,因此我分享了我当时在基于MFC对话框的应用程序中使用的方法。@Tim Erickson:在Visual Studio中,选项卡索引是Z索引。问题指定“在设计时”而不是在运行时。(编辑:MFC编辑浏览控件是我的解决方案),,,,,,,谢谢,gona必须手动打这场仗。Draw+Click+focus事件强制他们自己的顺序,我不能单靠tab顺序。例如:按钮在一个CEdit上。按钮必须在编辑框之前,否则单击转到编辑。但是,点击编辑将导致它在按钮上绘制,无论顺序如何。这节省了一天。我有一个un使用了我想删除隐藏在某处的文本框,但在designer视图中找不到它有半个小时了。所以我从属性中选择了它,单击designer视图,
ctrl-x
ctrl-v
,(有些诅咒),
del
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
                                        0, 0, 0, 0,
                                        SWP_NOMOVE | SWP_NOSIZE);
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)