Pergunta

Pergunta:

Alguém sabe como alterar o diretório atual de um diálogo de arquivo aberto já em execução?

Detalhes:

Eu tenho um diálogo personalizado abrir o arquivo (usando um modelo personalizado para adicionar controles adicionais), que também tem toda a validação, verificações existentes e testes criação desligado (via as bandeiras OPENFILENAME).

Virando as coisas off desativa o built-in comportamento do diálogo que fará com que ele altere a pasta exibida no momento, se o usuário digita um nome de pasta na caixa de combinação "nome do arquivo" e bate a tecla enter.

Eu gostaria de acrescentar que o comportamento de volta. Posso detectar quando isso acontece através do procedimento de gancho. Eu escondi o botão OK, desligou-o do acelerador, e colocar meu próprio botão "select" no controle. Isto significa que a única vez que recebo uma mensagem CDN_FILEOK é quando os hits do usuário digite na caixa de texto após a digitação.

Não posso, no entanto, descobrir como dizer programaticamente o diálogo para alterar o diretório atual.

Eu estava pensando que eu poderia ser capaz de fazer isso, enviando algum tipo de mensagem para o controle SHELLDLL_DefView na janela, mas eu não tenho sido capaz de encontrar qualquer documentação sobre isso.

Foi útil?

Solução 2

Eu era capaz de descobrir um trabalho em torno.

Acontece que quando a validação estiver desligado, digitar um nome de diretório que termina em um "\" ainda irá mudar o ser pasta exibida, mas digitando um nome de diretório que não termina em um "\" não vai .

Usando espião ++ eu era capaz de ver que quando entra é atingido uma mensagem WM_COMMAND será enviada para o controle diálogo comum com um argumento wParam cuja palavra oi-ordem é BN_CLICKED e cuja palavra baixa ordem é ID_OK.

Se eu subclasse o diálogo comum que pode interceptar a mensagem, mudar o texto na caixa de combinação de nome de arquivo, encaminhar a mensagem através de procedimento subclasse original, e em seguida, altere o texto de volta mais tarde.

É um pouco de corte, mas isso me permite obter o comportamento que eu quero de diálogo.

Outras dicas

Eu não tenho certeza da resposta direta, mas se você tiver SPY ++ ou qualquer outro programa de mensagem bisbilhotando, tente verificar as mensagens que vão por quando você mudar o diretório de um diálogo normal de OPENFILENAME. Você pode descobrir a resposta lá (embora seja a fora maneira mais difícil).

Alguém pode saber a resposta off-mão embora; Vamos esperar que eles fazem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top