由于在有些时候,我们会将对话框置顶,也就是在SetWindowPos的时候用&wndTopMost标识,但是,这时,如果在对话框上有一个选择文件路径的按钮存在,那么,在点击此按钮的时候,弹出的选择路径对话框会被置顶的对话框隐藏,这个时候,就会造成不必要的麻烦。
这个时候,只需要将BROWSEINFO的hwndOwner设置为m_hWnd即可。
比如以下的例子
原始代码:
void CSystemSettingSysFileTransDialog::OnBnClickedButtonRepoSel() { // TODO: 在此添加控件通知处理程序代码 BROWSEINFO bi; bi.hwndOwner=NULL; bi.pidlRoot=NULL; bi.pszDisplayName=NULL; bi.lpszTitle=_T("请选择您需要的目的文件夹:"); bi.ulFlags=0; bi.lpfn =NULL; bi.iImage =0; LPCITEMIDLIST pidl=SHBrowseForFolder(&bi); if(!pidl) return; TCHAR szDisplayName[MAX_PATH]; SHGetPathFromIDList(pidl,szDisplayName); CString str(szDisplayName); m_editFileRepo.SetWindowText(str); }
修改后的代码:
void CSystemSettingSysFileTransDialog::OnBnClickedButtonRepoSel() { // TODO: 在此添加控件通知处理程序代码 BROWSEINFO bi; bi.hwndOwner=m_hWnd; bi.pidlRoot=NULL; bi.pszDisplayName=NULL; bi.lpszTitle=_T("请选择您需要的目的文件夹:"); bi.ulFlags=0; bi.lpfn =NULL; bi.iImage =0; LPCITEMIDLIST pidl=SHBrowseForFolder(&bi); if(!pidl) return; TCHAR szDisplayName[MAX_PATH]; SHGetPathFromIDList(pidl,szDisplayName); CString str(szDisplayName); m_editFileRepo.SetWindowText(str); }
选择文件路径对话框被覆盖的问题
最新推荐文章于 2024-09-07 22:50:37 发布