C++ 最小化按钮赢得';不显示在MFC对话框上

C++ 最小化按钮赢得';不显示在MFC对话框上,c++,mfc,C++,Mfc,将最小化按钮添加到MFC对话框应用程序时遇到问题。我已启用此框(true) 最小化按钮出现在designer视图中,但当我运行应用程序时,按钮不可见 其他设置包括: 样式:重叠 应用程序窗口:真 边框:对话框框 工具窗口:False 系统菜单:正确 我试着加上: ModifyStyle(0,WS_最小化,真) 到OnInitDialog()但尚未解决该问题 我可以选择三种样式:弹出式、子样式和重叠样式。如果我使用弹出窗口,我看不到标题栏,也不能拖动窗口。如果我使用该样式,Child会引发访问冲突

将最小化按钮添加到MFC对话框应用程序时遇到问题。我已启用此框(true)

最小化按钮出现在designer视图中,但当我运行应用程序时,按钮不可见

其他设置包括: 样式:重叠
应用程序窗口:真
边框:对话框框
工具窗口:False
系统菜单:正确

我试着加上: ModifyStyle(0,WS_最小化,真)

OnInitDialog()但尚未解决该问题

我可以选择三种样式:弹出式、子样式和重叠样式。如果我使用弹出窗口,我看不到标题栏,也不能拖动窗口。如果我使用该样式,Child会引发访问冲突,因此我可以选择的唯一样式是重叠,它显示标题栏并允许我拖动窗口,但最小化按钮不可见

我正在使用Visual Studio 2019并运行Windows 10 1809

我已双重选中,最小化框设置为TRUE,但在运行时它仍不会显示在对话框中


问题是当我使用弹出窗口样式时,我根本看不到标题栏!此外,如果使用弹出式样式,则无法拖动窗口(缺少标题栏)。重叠似乎是我唯一可以使用的样式。

试试这样的样式:

BOOL CMFCApplication1Dlg::OnInitDialog(){

ModifyStyle(0, WS_MINIMIZEBOX, TRUE);
ModifyStyle(0, WS_POPUP, TRUE);
ModifyStyle(0, WS_BORDER, TRUE);
ModifyStyle(0, WS_SYSMENU, TRUE);
ModifyStyle(0, WS_CAPTION, TRUE);
BOOL CMFCApplication1Dlg::OnInitDialog()
{
    ModifyStyle(0, WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, TRUE);
    ...
}

考虑修改对话框模板(在.RC文件中)以包含必要的样式位,而不是在运行时修改样式。

尝试以下操作:

BOOL CMFCApplication1Dlg::OnInitDialog()
{
    ModifyStyle(0, WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, TRUE);
    ...
}

考虑修改对话框模板(在.RC文件中)以包含必要的样式位,而不是在运行时修改样式。

MFC与编写没有任何框架的对话框没有什么不同。声明一个
DIALOGEX
资源,让系统加载它,并基于该模板显示一个对话框

要获得带有最小化框的对话框,它至少需要样式
WS_MINIMIZEBOX
WS_SYSMENU
1。打开定义对话框模板的.rc脚本,并确保
STYLE
元素中存在这两种样式

基于对话框的应用程序(带有最小化框)的默认对话框模板通常定义如下:

BOOL CMFCApplication1Dlg::OnInitDialog()
{
    ModifyStyle(0, WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, TRUE);
    ...
}
IDD_MFCAPApplication1_对话框0、0、320、200
样式DS|U外壳字体| WS|U弹出窗口| WS|U可见| WS|U标题
|粗框
|WS\u系统菜单
|WS_最小电子邮箱
EXSTYLE WS_EX_APPWINDOW
标题“”
字体8,“MS Shell Dlg”
开始
除霜按钮“OK”,IDOK,209179,50,14
按钮“取消”,IDCANCEL,263179,50,14
CTEXT“TODO:在此处放置对话框控件”,IDC_STATIC,10,96300,8
终止
您不需要编写任何在运行时执行的代码来获得这种行为



1 From:“
WS_MINIMIZEBOX
:窗口有一个最小化按钮。[…]还必须指定
WS_系统菜单
样式。

MFC与编写没有任何框架的对话框没有什么不同。声明一个
DIALOGEX
资源,让系统加载它,并基于该模板显示一个对话框

要获得带有最小化框的对话框,它至少需要样式
WS_MINIMIZEBOX
WS_SYSMENU
1。打开定义对话框模板的.rc脚本,并确保
STYLE
元素中存在这两种样式

基于对话框的应用程序(带有最小化框)的默认对话框模板通常定义如下:

BOOL CMFCApplication1Dlg::OnInitDialog()
{
    ModifyStyle(0, WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, TRUE);
    ...
}
IDD_MFCAPApplication1_对话框0、0、320、200
样式DS|U外壳字体| WS|U弹出窗口| WS|U可见| WS|U标题
|粗框
|WS\u系统菜单
|WS_最小电子邮箱
EXSTYLE WS_EX_APPWINDOW
标题“”
字体8,“MS Shell Dlg”
开始
除霜按钮“OK”,IDOK,209179,50,14
按钮“取消”,IDCANCEL,263179,50,14
CTEXT“TODO:在此处放置对话框控件”,IDC_STATIC,10,96300,8
终止
您不需要编写任何在运行时执行的代码来获得这种行为



1 From:“
WS\u MINIMIZEBOX
:窗口有一个最小化按钮。[…]还必须指定
WS\u系统菜单
样式。

我只有3个选项:弹出、子项或重叠。我试了三种不同的款式,但没有一种是有纽扣的。你能给我一个提示,我将在哪里设置WS_电子书风格吗?谢谢。在资源编辑器中,选择主对话框,然后在属性窗口中滚动找到“最小化框”属性并将其设置为“true”。通常,对话框是一个“弹出”窗口。问题是当我使用弹出窗口时,我根本看不到标题栏!它是基于对话框的应用程序还是在应用程序内部激活的对话框?@IInspectable,确切地说,什么是不需要的?我上面的建议是添加一些样式。这就解决了OP的问题,不管他在哪里添加它们。我只有3个选项:弹出、子项或重叠。我试了三种不同的款式,但没有一种是有纽扣的。你能给我一个提示,我将在哪里设置WS_电子书风格吗?谢谢。在资源编辑器中,选择主对话框,然后在属性窗口中滚动找到“最小化框”属性并将其设置为“true”。通常,对话框是一个“弹出”窗口。问题是当我使用弹出窗口时,我根本看不到标题栏!它是基于对话框的应用程序还是在应用程序内部激活的对话框?@IInspectable,确切地说,什么是不需要的?我上面的建议是添加一些样式。这解决了OP的问题,不管他在哪里添加了它们。不鼓励只使用代码的答案。请添加一些解释,说明这是如何解决问题的,或者这与现有答案有何不同。不鼓励只使用代码的答案。请添加一些解释,说明这是如何解决问题的,或者这与现有答案有何不同。