Pergunta : Como posso eu conseguir CFileDialog não mudar o diretório inicial?


Nossa aplicação tem um número muito grande de exemplos em que um CFileDialog é aberto. Nós adicionamos um em que nós queremos manter um diretório de defeito separado. isto é tão geralmente os sustentos de CFileDialog é diretório inicial da última vez onde o usuário alcançou uma lima. Entretanto neste exemplo nós queremos optar um diretório diferente sem mudar o diretório previamente recordado usado pelo descanso da aplicação.

É a última parte que eu não posso conseguir trabalhar. Eu pensei que deve ser fácil usar a bandeira de OFN_NOCHANGEDIR com o CFileDialog, mas este não parece fazer qualquer coisa.

Eu igualmente tentei conservar o diretório atual antes de usar o diálogo da lima e então de restaurá-lo using estes métodos:

currentDir de CString;
:: GetCurrentDirectory (MAX_PATH, currentDir.GetBuffer (MAX_PATH));
currentDir.ReleaseBuffer ();

… arquivar o acesso

:: SetCurrentDirectory (currentDir);

Quando o currentDir parecer ser obtido corretamente, SetCurrentDirectory não parece influenciar a próxima vez que um diálogo da lima é aberto.

É “o diretório atual” realmente a coisa direita a ajustar-se? Se assim que ponto faz em CFileDialog ajustá-lo geralmente?

Eu gostaria realmente de algum soultion que não significa atravessar a base inteira do código e a mudança de cada diálogo da lima existente.




Resposta : Como posso eu conseguir CFileDialog não mudar o diretório inicial?

Aquele é agora você diz que você soube. :)

Há somente um lugar onde tais coisas são armazenadas - o registro. Você pode tentar eliminar erros de você programa - você verá o código fonte do MFC (CWinApp, CDocManager) e este lugar no registro. Eu penso, ele serei HKLM/Software/Provider/Application/something.

Eu penso que há uma maneira de cancelar métodos de CDocManager:
http://www.codeguru.com/cpp/w-d/dislog/commondialogs/print.php/c1967




Outras soluções  
 
programming4us programming4us