Change Dir inside CFileDialog
-
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?
-
I guess that UpdateData has nothing to do with what you are trying to achieve. Could you post your actual code?
void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles"}; SetCurrentDirectory(szPath); } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles"}; SetCurrentDirectory(szPath2); } Invalidate(); UpdateData(false); // Here I want refresh the CFileDialog with the new filter and path }
I Try, but I'm not sure :))
-
void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles"}; SetCurrentDirectory(szPath); } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles"}; SetCurrentDirectory(szPath2); } Invalidate(); UpdateData(false); // Here I want refresh the CFileDialog with the new filter and path }
I Try, but I'm not sure :))
No, this code won't work. SetCurrentDirectory just sets the current directory. It cannot change the folder selection within the CFileDialog. You have to find the possibility to change the folder selection within the CFileDialog control(s)!
-
No, this code won't work. SetCurrentDirectory just sets the current directory. It cannot change the folder selection within the CFileDialog. You have to find the possibility to change the folder selection within the CFileDialog control(s)!
ok, and what are these controls? can you send me an example code? Thank you
I Try, but I'm not sure :))
-
void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles"}; SetCurrentDirectory(szPath); } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles"}; SetCurrentDirectory(szPath2); } Invalidate(); UpdateData(false); // Here I want refresh the CFileDialog with the new filter and path }
I Try, but I'm not sure :))
Try instead to overwrite the m_ofn member lpstrFile to contain the full folder path, either "c:\\DocFiles" or "c:\\TxtFiles".
-
Try instead to overwrite the m_ofn member lpstrFile to contain the full folder path, either "c:\\DocFiles" or "c:\\TxtFiles".
sorry, it doesn't work :(
I Try, but I'm not sure :))
-
sorry, it doesn't work :(
I Try, but I'm not sure :))
Could you post your implementation?
-
Could you post your implementation?
I try: void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles"}; SetCurrentDirectory(szPath); m_ofn.lpstrFile=szPath; } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles"}; SetCurrentDirectory(szPath2); m_ofn.lpstrFile=szPath2; } Invalidate(); UpdateData(false); } and void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles\\file.doc"}; SetCurrentDirectory(szPath); m_ofn.lpstrFile=szPath; } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles\\file.txt"}; SetCurrentDirectory(szPath2); m_ofn.lpstrFile=szPath2; } Invalidate(); UpdateData(false); } but don't work. N.B. the file.txt and file.doc are existing files on the disk.
I Try, but I'm not sure :))
-
Could you post your implementation?
I try 2 solution: void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles"}; SetCurrentDirectory(szPath); m_ofn.lpstrFile=szPath; } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles"}; SetCurrentDirectory(szPath2); m_ofn.lpstrFile=szPath2; } Invalidate(); UpdateData(false); } and void MyClass::OnTypeChange() { if(m_ofn.nFilterIndex==2){ // .doc char szPath [MAX_PATH] = {"c:\\DocFiles\\file.doc"}; //SetCurrentDirectory(szPath); m_ofn.lpstrFile=szPath; } else { // .txt char szPath2 [MAX_PATH] = {"c:\\TxtFiles\\file.txt"}; //SetCurrentDirectory(szPath2); m_ofn.lpstrFile=szPath2; } Invalidate(); UpdateData(false); } But don't work. N.B.: c:\DocFiles\file.doc and c:\TxtFiles\file.txt are existing files on the disk.
I Try, but I'm not sure :))