MFC 由主对话框创建的子对话框始终显示在主对话框前面,而且最小化主对话框,子对话框也会跟着最小化

怎么才能我点击主对话框,子对话框子对话框就显示在主对话框后面,最小化主对话框,子对话框不会跟着改变创建子对话框函数voidCClientDlg::OnDblclkList... 怎么才能我点击主对话框,子对话框子对话框就显示在主对话框后面,最小化主对话框,子对话框不会跟着改变
创建子对话框函数
void CClientDlg::OnDblclkListGg(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int index=m_list.GetSelectionMark();
CString id;
id=m_list.GetItemText(index,0);
//MessageBox(id);
vector<GG>::iterator itr;
for(itr=m_vgg.begin();itr!=m_vgg.end();itr++)
{
if(itr->m_ID==id)
{
break;
}

}
HWND hWnd=::FindWindow(NULL,id);
if (hWnd)
{
::SetForegroundWindow(hWnd);
}
else
{
MessageBox("yes");
CChatDlg *dlg=new CChatDlg;
dlg->m_title=itr->m_ID;
dlg->m_addr=itr->m_addr;
dlg->m_socket=m_socket;
dlg->Create(IDD_DIALOG_CHAT);
dlg->ShowWindow(SW_SHOW);
}
*pResult = 0;
}
展开
 我来答
love冰淇淋2009
2014-08-18 · 超过11用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:24.6万
展开全部
m_dlgTest.Create(IDD_DIALOG1,GetWindow(NULL));
m_dlgTest.ShowWindow(SW_SHOW);

可能是你创建子窗口的方法有问题吧。
可以先添加一个对话框资源,然后创建一个该对话框资源的类,然后在主对话框类中添加这个子对话框类的一个变量,然后用 Create(), 和ShowWindow 两个函数配合做的窗口不会出现你这样的问题。
现在你改的话很麻烦。可以找到主窗口最小化的消息响应函数在里头加补丁代码了,最小化的时候把要正常显示的子窗口再显示出来。

看了下代码 FindWindow 函数 不管你窗口是显示还是隐藏的,只要窗口存在都会找到。
所以你每次FindWindow都是成功的,所以每次都会执行隐藏窗口。
大概看了下代码没仔细看。
veket的小号
推荐于2016-09-20 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3993万
展开全部

详见附件 demo  要把 非模态子窗口  的 父窗口设置 桌面

void CMfcdlg2014Dlg::OnButton1() 

{

// TODO: Add your control notification handler code here

if(!pSubDlg)

{

pSubDlg = new CSubDlg();// 非模态

pSubDlg->Create(IDD_DIALOG1, GetDesktopWindow());创建子窗口的时候传入桌面的窗口指针

}

pSubDlg->ShowWindow(SW_SHOW);// 显示 + 

pSubDlg->SetFocus();// 得到焦点

}


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式