如何让模态对话画框达到非模态对话框 焦点无限制效果

在开发CAD的插件时,创建一个图形区上的 模态对话框,其中设置了一个按钮触发效果是隐藏对话框,从而让用户在CAD图形区操作,操作结束后再显示回对话框。

一开始直接用ShowWindow(SW_HIDE),发现对话框隐藏后 ,焦点也不见了,无法在图形区显示鼠标 。

后来 将创建模态对话框改为 非模态对话框,如下:

// 原先的创建模态对话框
GalpDialogWindowTemplateSelect dlg(m_winID);
if (IDOK == dlg.DoModal())
{
return;
}
else
{
return;
}

// 更改为创建非模态对话框,此时需要用new创建,否则没效果。

GalpDialogWindowTemplateSelect* dlg = new GalpDialogWindowTemplateSelect(m_winID);
if (IDOK == dlg->Create(IDD_DIALOG_WindowTemplateSelect))
{
return;
}
else
{
return;
}

然后之前的功能就可以了。

当然,还有一种方法:

ShowWindow(SW_HIDE);

CWnd* parent = GetParent();
if(parent)
{
parent->EnableWindow(TRUE);
}
CWnd* pMainWnd = AfxGetMainWnd();
if (pMainWnd)
{
pMainWnd->EnableWindow(TRUE);
}

原文地址:https://www.cnblogs.com/linyilong/p/5193067.html