MFC 中dlg.DoModal()对话框移动到指定区域显示的一个解决办法

本文介绍了一种在使用CFileDialog时使其显示于屏幕中央的方法。通过调整代码,在调用DoModal()之前设置父窗口为焦点,使得对话框出现在屏幕中间,改善用户体验。

在做一个工程,由于打开文件的时候,用了CFileDialog,然后这个打开按键在界面的一边,如果直接用

 

CFileDialog dlg(
          TRUE, //TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

         _T("AIM"),//指定默认的文件扩展名。

         _T("*.aim"), // 指定默认的文件名。

         OFN_NOCHANGEDIR, //指明一些特定风格。一定注意这里选择这个,可能会造成数据库连接失败

         _T("路径文件(*.aim)|*.aim|")
  ); 
 if(dlg.DoModal()==IDOK)
 {
        CString lpszPathName;
        lpszPathName=dlg.GetPathName(); 

 

        。。。。。。。。。。。。。

 }

 

dlg会显示在界面的一边,而不是在界面的中间。为了显示在中间,我试了很多方法,最后发现,domodal后的窗口中心总

是和当前焦点的窗口中心重合,为此,我把指定窗口激活焦点,就可以移动domodal的位置了。

 

CFileDialog dlg(
           TRUE, //TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

         _T("AIM"),//指定默认的文件扩展名。

         _T("*.aim"), // 指定默认的文件名。

        OFN_NOCHANGEDIR, //指明一些特定风格。一定注意这里选择这个,可能会造成数据库连接失败

         _T("路径文件(*.aim)|*.aim|")
  ); 
 pMainDlg->SetFocus(); //为了把dlg放在中间

 if(dlg.DoModal()==IDOK)
 {
        CString lpszPathName;
       lpszPathName=dlg.GetPathName(); 

 }

 this->SetFocus();

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值