我现在有2个对话框 一个主对话框 记为MDlg,一个非模态对话框记为CDlg,然后在非模态对话框中有个按钮是选择文件的。代码如下:UpdateData();
CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("All Files|*.*||"));
if(dlg.DoModal())
{
m_Path=dlg.GetPathName();//m_str为文本框对应的CSTRING类型的变量
GetDlgItem(IDC_ED_SOURCE)->SetWindowText(m_Path);
}
UpdateData(FALSE); 
问题就来了
1)当我在CDlg中点击这个按钮之后,总是会把MDlg前端显示,然后才弹出文件选择对话框。这是为什么?我该怎么修改?
2)我定义CDlg为非模态对话框,代码如下: CCDlg *testdlg=new CSHATEST;
testdlg->Create(IDD_CAL_DIALOG,GetDesktopWindow());
testdlg->ShowWindow(SW_SHOW);
/*如何才能只显示一个图标?下面的代码是在网上看到的,可是没什么用啊*/
CWnd *m_pWnd=CWnd::GetDesktopWindow();
m_pWnd->ShowWindow(SW_HIDE);
        testdlg->SetParent(m_pWnd);即使我这样做了,在菜单栏上还是会出现两个图标(2个对话框的都显示了)。我该怎么做才能只显示一个图标呢?

解决方案 »

  1.   

    网上搜下,隐藏任务栏图标  会找到你想要的答案,并且用一个ModifyStyle函数就搞定了
      

  2.   

    问题2解决:
    在OnInitDialog()里面添加:ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
    就可以了。
    那问题1呢?
      

  3.   

    1)当我在CDlg中点击这个按钮之后,总是会把MDlg前端显示,然后才弹出文件选择对话框。这是为什么?我该怎么修改?
    ------------------------------
    你的MDlg是CDlg的子窗口?
      

  4.   


    不是,相反的,CDlg是MDlg的子窗口,CDlg是创建的非模态子对话框