我有一个基于对话框的应用程序(MFC-VS 2008)。我有一个列表控件。我弹出其他对话框,但我也希望能够返回到父应用程序对话框。我可以回到父应用程序的dilaog框,但是问题是,即使我用鼠标单击它,它也仍然隐藏在“子”窗口的后面。

我希望它能走到最前面。

可能有些明显的地方是我做错了。要使父窗口具有焦点,该怎么办?我假设子dlg上有一些不应存在的属性,或者缺少某些属性

如果有帮助,我可以发布rc代码。

编辑:

这是两个对话框的.rc代码。第一个是大型机窗口。

第二个使用以下代码启动:

HistogramWindow *histwind;

histwind = new  HistogramWindow(this);
histwind->Create(IDD_DIALOG_HISTOGRAM);
histwind->ShowWindow(SW_SHOW);

IDD_DTHISTOGRAMDLG_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "dtHistogramDlg"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,209,179,50,14,NOT WS_VISIBLE
    PUSHBUTTON      "Cancel",IDCANCEL,263,179,50,14,NOT WS_VISIBLE
    CONTROL         "",IDC_LIST_SYMBOL_SETS,"SysListView32",LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,60,50
END

IDD_DIALOG_HISTOGRAM DIALOGEX 0, 0, 317, 184
STYLE DS_SETFONT | DS_FIXEDSYS | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "Histogram"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,205,163,50,14,NOT WS_VISIBLE
    PUSHBUTTON      "Cancel",IDCANCEL,260,163,50,14,NOT WS_VISIBLE
    CONTROL         "",IDC_STATIC,"Static",SS_BLACKFRAME,7,7,20,20
END

最佳答案

您可能正在通过调用DoModal使用模式对话框。
相反,您需要创建一个modeless dialog box

为此,请使用CWnd::CreateCWnd::ShowWindow

示例:

CMyDialog *m_pMyDialog = new CMyDialog(this);
m_pMyDialog->Create(CMyDialog::IDD);
m_pMyDialog->ShowWindow(SW_SHOW);

10-08 09:17
查看更多