MFC:向可调整大小的CDialogEx添加状态栏?

MFC:向可调整大小的CDialogEx添加状态栏?,mfc,statusbar,cdialog,Mfc,Statusbar,Cdialog,我认为在用于查看图像的CDialogEx中添加一个带有百分比和其他信息的状态栏会很好。但是,似乎不能简单地使用CMFCStatusBar或CStatusBar使其正常工作 我发现了各种各样的示例,但是没有一个在客户端区域之外有状态栏,并且随着大小的变化而移动?不同的方法只是创建一个状态栏,最后隐藏在一个水平滚动条下,如果你调整窗口的大小,StaseBar就在对话框中间。 是否有一种简单的方法或完整的示例,可以在CDialogEx上设置一个可以像普通窗口一样调整大小的状态栏 是否有一种简单的方法或

我认为在用于查看图像的CDialogEx中添加一个带有百分比和其他信息的状态栏会很好。但是,似乎不能简单地使用CMFCStatusBar或CStatusBar使其正常工作

我发现了各种各样的示例,但是没有一个在客户端区域之外有状态栏,并且随着大小的变化而移动?不同的方法只是创建一个状态栏,最后隐藏在一个水平滚动条下,如果你调整窗口的大小,StaseBar就在对话框中间。 是否有一种简单的方法或完整的示例,可以在CDialogEx上设置一个可以像普通窗口一样调整大小的状态栏

是否有一种简单的方法或完整的示例,可以在CDialogEx上设置一个可以像普通窗口一样调整大小的状态栏

对!!创建状态栏后,可以将其添加到动态布局以调整大小:

//这就是我们在屏幕上实际绘制的地方 首先重新定位控制杆,最后重新定位控制杆, ID \指示器\会议\类型; GetDynamicLayout->AddItemm\u StatusBar.GetSafeHwnd, CMFCDynamicClayout::MoveVertical100,CMFCDynamicClayout::SizeHorizontal100; 我有一个状态栏不是CMFCStatusBar,因为它不会工作,但CStatusBar在我的应用程序中的两个对话框上是正常的

动态布局未自动启用时 以下是一个更新的示例,说明在没有控件的情况下,CDialogEx未自动启用动态布局:

boolcmydlg::OnInitDialog { CDialogEx::OnInitDialog; 如果!m_StatusBar.Createthis{ Trace0无法创建状态栏\n; 返回-1; } m_StatusBar.SetIndicator指示器,指示器的计数; 重新定位BARSAFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0; 使能输出; 自动pdlmanager=GetDynamicLayout; 如果PDL管理器{ 如果pdlmanager->Createthis{ pdlmanager->AddItemm_StatusBar.GetSafeHwnd,CMFCDynamicLayout::MoveVertical100,CMFCDynamicLayout::SizeHorizontal100; } } //除非将焦点设置为控件,否则返回TRUE //异常:OCX属性页应返回FALSE 返回TRUE; } 为水平滚动条提供服务 如果您有一个水平滚动条,状态栏将在其上方结束;因此,您可能必须创建单独的CWnd并将其添加到动态布局中,这也是重新定位条的剩余部分

以下是如何为内容添加视图窗口,以便在视图区域中包含滚动条:

boolcmydlg::OnInitDialog { CDialogEx::OnInitDialog; 如果!m_StatusBar.Createthis{ Trace0无法创建状态栏\n; 返回-1; } m_StatusBar.SetIndicator指示器,指示器的计数; 正确的rc; GetClientRect&rc; CString clsname=AfxRegisterWndClass0; m_ImageView.Createclsname,_T,WS_CHILD | WS_VISIBLE,rc,this,IDC_MY_VIEW; 首先重新定位控制栏,最后重新定位控制栏,IDC查看我的视图; 使能输出; 自动pdlmanager=GetDynamicLayout; 如果PDL管理器{ 如果pdlmanager->Createthis{ pdlmanager->AddItemm_StatusBar.GetSafeHwnd,CMFCDynamicLayout::MoveVertical100,CMFCDynamicLayout::SizeHorizontal100; pdlmanager->AddItemm_ImageView.GetSafeHwnd,CMFCDynamicLayout::MoveNone,CMFCDynamicLayout::sizeHorizontal and Vertical100100; } } //除非将焦点设置为控件,否则返回TRUE //异常:OCX属性页应返回FALSE 返回TRUE; } 是否有一种简单的方法或完整的示例,可以在CDialogEx上设置一个可以像普通窗口一样调整大小的状态栏

对!!创建状态栏后,可以将其添加到动态布局以调整大小:

//这就是我们在屏幕上实际绘制的地方 首先重新定位控制杆,最后重新定位控制杆, ID \指示器\会议\类型; GetDynamicLayout->AddItemm\u StatusBar.GetSafeHwnd, CMFCDynamicClayout::MoveVertical100,CMFCDynamicClayout::SizeHorizontal100; 我有一个状态栏不是CMFCStatusBar,因为它不会工作,但CStatusBar在我的应用程序中的两个对话框上是正常的

动态布局未自动启用时 以下是一个更新的示例,说明在没有控件的情况下,CDialogEx未自动启用动态布局:

boolcmydlg::OnInitDialog { CDialogEx::OnInitDialog; 如果!m_StatusBar.Createthis{ Trace0无法创建状态栏\n; 返回-1; } m_StatusBar.SetIndicator指示器,指示器的计数; 重新定位BARSAFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0; 使能输出; 自动pdlmanager=GetDynamicLayout; 如果PDL管理器{ 如果pdlmanager->Createthis{ pdlmanager->AddItemm_StatusBar.GetSafeHwnd,CMFCDynamicLayout::MoveVertical100,CMFCDynamicLayout::SizeHorizontal100; } } //除非将焦点设置为控件,否则返回TRUE //异常:OCX属性页应返回FALSE 返回TRUE; } 为水平滚动条提供服务 如果有水平滚动条,则状态栏将 我在它上面结束;因此,您可能必须创建单独的CWnd并将其添加到动态布局中,这也是重新定位条的剩余部分

以下是如何为内容添加视图窗口,以便在视图区域中包含滚动条:

boolcmydlg::OnInitDialog { CDialogEx::OnInitDialog; 如果!m_StatusBar.Createthis{ Trace0无法创建状态栏\n; 返回-1; } m_StatusBar.SetIndicator指示器,指示器的计数; 正确的rc; GetClientRect&rc; CString clsname=AfxRegisterWndClass0; m_ImageView.Createclsname,_T,WS_CHILD | WS_VISIBLE,rc,this,IDC_MY_VIEW; 首先重新定位控制栏,最后重新定位控制栏,IDC查看我的视图; 使能输出; 自动pdlmanager=GetDynamicLayout; 如果PDL管理器{ 如果pdlmanager->Createthis{ pdlmanager->AddItemm_StatusBar.GetSafeHwnd,CMFCDynamicLayout::MoveVertical100,CMFCDynamicLayout::SizeHorizontal100; pdlmanager->AddItemm_ImageView.GetSafeHwnd,CMFCDynamicLayout::MoveNone,CMFCDynamicLayout::sizeHorizontal and Vertical100100; } } //除非将焦点设置为控件,否则返回TRUE //异常:OCX属性页应返回FALSE 返回TRUE; }
A是一个普通窗口。A是一个普通窗口。我为答案添加了其他信息,我需要使用这些信息来启用动态布局。@df234987请尝试将我的答案与您的问题保持相对。您正在添加状态栏大小调整问题之外的其他代码。第一次编辑关于启用布局管理器还可以,但是第二次编辑是朝着另一个方向进行的。如果使用滚动条,它会给出人们可能想要的结果。您添加了CStatusBar,但并没有提供您真正想要的内容,您需要添加另一项来封装对话框上的内容-这样他们可以在一个位置获得所有答案。@df234987好的,我添加了其他信息来回答问题,我需要使用这些信息来启用动态布局。@df234987请尝试保留我的答案关于你的问题。您正在添加状态栏大小调整问题之外的其他代码。第一次编辑关于启用布局管理器还可以,但是第二次编辑是朝着另一个方向进行的。如果使用滚动条,它会给出人们可能想要的结果。您添加了CStatusBar,但并没有给出您真正想要的内容,您需要添加另一项来封装对话框上的内容-这样他们可以在一个地方得到所有答案。@df234987确定