MFC创建非模态对话框,新窗口不获取焦点

MFC创建多个非模态对话框,部分窗口不获取焦点

开发环境VS2017+MFC工程

非模态对话框

在主对话框内创建两个非模态对话框时,其中先创建的窗口是输入数据并设置的,后创建的对话框只是作为显示状态的内容。所以我需要将焦点设置到第一个创建的对话框,后创建的对话框只是默认创建并且显示在桌面上(可以通过MoveWinodow把对话框确定屏幕上的位置)。
首先,在创建需要设置焦点的对话框的过程中添加SetFocus()方法:

FocusDlg *inDlg = new FocusDlg();
inDlg->Create(IDD_DIALOG_xxxx, this);
inDlg->ShowWindow(SW_SHOW);
inDlg->SetFocus();

其次,不获取焦点的对话框在创建时ShowWindow()应该使用SW_SHOWNOACTIVATE参数:

UnFocusDlg *pfDlg = new UnFocusDlg();
pfDlg->m_xxxxx.Format(_T(“对话框标题:%s”), m_valueTst);//如果需要设置对话框的标题,需要在OnInitDialog()中写SetWindowText(m_xxxxx)
pfDlg->Create(IDD_DIALOG_xxxx, this);
pfDlg->ShowWindow(SW_SHOWNOACTIVATE);

最后,如图所示,在创建的不需要设置焦点的对话框的.rc视图资源文件中对对话框的属性进行设置,Disabled设置为True,Visable设置为False:
MFC创建非模态对话框,新窗口不获取焦点