Change Dir inside CFileDialog
-
Hi everyone, I have a problem in vc6. In a CFileDialog with 2 configured extensions (eg .Txt and .doc) I want automatically change directory in my CFileDialog when the extension changes: when I select the .txt extension I want the CFileDialog in the 'C:\FileTxt' directory, when instead I select the extension .doc I want the CFileDialog in the directory 'C:\FileDoc' with the corresponding files list ... ...Can someone help me with some example? Thank you
I Try, but I'm not sure :))
-
Hi everyone, I have a problem in vc6. In a CFileDialog with 2 configured extensions (eg .Txt and .doc) I want automatically change directory in my CFileDialog when the extension changes: when I select the .txt extension I want the CFileDialog in the 'C:\FileTxt' directory, when instead I select the extension .doc I want the CFileDialog in the directory 'C:\FileDoc' with the corresponding files list ... ...Can someone help me with some example? Thank you
I Try, but I'm not sure :))
-
I don't get you. I mean, the user once the file dialog is open, chooses both the folder and the file extension (by choosing an allowed file). What do you want to do, instead?
I want that automatically when I change the extension of the files I want to see, the dialog automatically also change the folder of the list of files. The '.txt' files are in one folder, the '.doc' files in another ...
I Try, but I'm not sure :))
-
I want that automatically when I change the extension of the files I want to see, the dialog automatically also change the folder of the list of files. The '.txt' files are in one folder, the '.doc' files in another ...
I Try, but I'm not sure :))
-
Hi everyone, I have a problem in vc6. In a CFileDialog with 2 configured extensions (eg .Txt and .doc) I want automatically change directory in my CFileDialog when the extension changes: when I select the .txt extension I want the CFileDialog in the 'C:\FileTxt' directory, when instead I select the extension .doc I want the CFileDialog in the directory 'C:\FileDoc' with the corresponding files list ... ...Can someone help me with some example? Thank you
I Try, but I'm not sure :))
-
in the Combo box that appared in CFileDialog when I configure more extension, I intercept the OnTypeChange() and in this routine I want change the dir...
I Try, but I'm not sure :))
-
Thank's Richard, I have see the class... I have that routine and in that routine I want change the dir. Different dir for different extension.
I Try, but I'm not sure :))
-
Thank's Richard, I have see the class... I have that routine and in that routine I want change the dir. Different dir for different extension.
I Try, but I'm not sure :))
-
Thank's Richard, I'm using VC6++ and I need a simple example to understand.. my OnTypeChange() { if(m_ofn.nFilterIndex==1) m_ofn.lpstrDefExt=".txt"; if(m_ofn.nFilterIndex==2) m_ofn.lpstrDefExt=".doc"; if(m_ofn.nFilterIndex==1) ...code for change dir1 if(m_ofn.nFilterIndex==2) ...code for change dir2 }
I Try, but I'm not sure :))
-
Hi everyone, I have a problem in vc6. In a CFileDialog with 2 configured extensions (eg .Txt and .doc) I want automatically change directory in my CFileDialog when the extension changes: when I select the .txt extension I want the CFileDialog in the 'C:\FileTxt' directory, when instead I select the extension .doc I want the CFileDialog in the directory 'C:\FileDoc' with the corresponding files list ... ...Can someone help me with some example? Thank you
I Try, but I'm not sure :))
I don't use MFC but as it shims the Win32 I will explain how you do it in raw Win32. The FILEOPEN dialog in common controls take a structure called OPENFILENAME one of it's fields is lpfnHook which allows you to install your own handler. OPENFILENAMEA (commdlg.h) - Win32 apps | Microsoft Docs[^] In your handler in the WM_NOTIFY message you handle the CDN_TYPECHANGE message CDN_TYPECHANGE notification code (Commdlg.h) - Win32 apps | Microsoft Docs[^] So a minimal handler looks like this
UINT_PTR CALLBACK OpenHookProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_NOTIFY:
{
LPOFNOTIFY pnh = (LPOFNOTIFY)lParam;
if (pnh && (pnh->hdr.code == CDN_TYPECHANGE))
{
switch (pnh->lpOFN->nFilterIndex)
{
case 0:
// First extension type selected
break;
case 1:
// Second selection type selected
break;
}
}
break;
}
}
return (0);
}In vino veritas
-
Thank's Richard, I'm using VC6++ and I need a simple example to understand.. my OnTypeChange() { if(m_ofn.nFilterIndex==1) m_ofn.lpstrDefExt=".txt"; if(m_ofn.nFilterIndex==2) m_ofn.lpstrDefExt=".doc"; if(m_ofn.nFilterIndex==1) ...code for change dir1 if(m_ofn.nFilterIndex==2) ...code for change dir2 }
I Try, but I'm not sure :))
-
in the Combo box that appared in CFileDialog when I configure more extension, I intercept the OnTypeChange() and in this routine I want change the dir...
I Try, but I'm not sure :))
-
Hi everyone, I have a problem in vc6. In a CFileDialog with 2 configured extensions (eg .Txt and .doc) I want automatically change directory in my CFileDialog when the extension changes: when I select the .txt extension I want the CFileDialog in the 'C:\FileTxt' directory, when instead I select the extension .doc I want the CFileDialog in the directory 'C:\FileDoc' with the corresponding files list ... ...Can someone help me with some example? Thank you
I Try, but I'm not sure :))
Have you already customized your CFileDialog?
-
I don't use MFC but as it shims the Win32 I will explain how you do it in raw Win32. The FILEOPEN dialog in common controls take a structure called OPENFILENAME one of it's fields is lpfnHook which allows you to install your own handler. OPENFILENAMEA (commdlg.h) - Win32 apps | Microsoft Docs[^] In your handler in the WM_NOTIFY message you handle the CDN_TYPECHANGE message CDN_TYPECHANGE notification code (Commdlg.h) - Win32 apps | Microsoft Docs[^] So a minimal handler looks like this
UINT_PTR CALLBACK OpenHookProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_NOTIFY:
{
LPOFNOTIFY pnh = (LPOFNOTIFY)lParam;
if (pnh && (pnh->hdr.code == CDN_TYPECHANGE))
{
switch (pnh->lpOFN->nFilterIndex)
{
case 0:
// First extension type selected
break;
case 1:
// Second selection type selected
break;
}
}
break;
}
}
return (0);
}In vino veritas
I already intercept CDN_TYPECHANGE in my OnTypeChange () ...to change the directory what code I have to write where in your example you put the rem // First extension type selected and // Second selection type selected for list in my CFileDialog a different dir? Thank's
I Try, but I'm not sure :))
-
You are right, in time I forgot the behavior of such a dialog. Here you may find an hint: https://www.experts-exchange.com/questions/20090938/Changing-location-in-Open-Save-dialog.html[^].
sorry... in expert-exchange : "You can use the DlgDirList() function (of CWnd class). It fills a list box with a file or directory listing. Only thing you should know is the ID of the list control." and I haven't the ID of the list control :(
I Try, but I'm not sure :))
-
Have you already customized your CFileDialog?
not yet :(
I Try, but I'm not sure :))
-
sorry... in expert-exchange : "You can use the DlgDirList() function (of CWnd class). It fills a list box with a file or directory listing. Only thing you should know is the ID of the list control." and I haven't the ID of the list control :(
I Try, but I'm not sure :))
-
I already intercept CDN_TYPECHANGE in my OnTypeChange () ...to change the directory what code I have to write where in your example you put the rem // First extension type selected and // Second selection type selected for list in my CFileDialog a different dir? Thank's
I Try, but I'm not sure :))
So just change directory then invalidate the dialog so it refreshes, you did all the hard part :-) SetCurrentDirectory function (winbase.h) - Win32 apps | Microsoft Docs[^] Do remember if you want to go back to the original directory after the dialog closes, save the directory before you call the dialog with GetCurrentDirectory and the set it back when you exit.
In vino veritas
-
So just change directory then invalidate the dialog so it refreshes, you did all the hard part :-) SetCurrentDirectory function (winbase.h) - Win32 apps | Microsoft Docs[^] Do remember if you want to go back to the original directory after the dialog closes, save the directory before you call the dialog with GetCurrentDirectory and the set it back when you exit.
In vino veritas
I changed the dir with SetCurrent Directory , I invalidated and I did UpdateData(false) for refresh but nothing happens ...
I Try, but I'm not sure :))
-
I changed the dir with SetCurrent Directory , I invalidated and I did UpdateData(false) for refresh but nothing happens ...
I Try, but I'm not sure :))
I guess that UpdateData has nothing to do with what you are trying to achieve. Could you post your actual code?