문제

의문:

이미 실행되는 열린 파일 대화 상자의 현재 디렉토리를 변경하는 방법을 아는 사람이 있습니까?

세부:

모든 유효성 검사, 기존 점검 및 생성 테스트 (OpenFilename 플래그를 통해)가 꺼진 사용자 정의 템플릿을 사용하여 사용자 정의 템플릿을 사용하여 사용자 정의 열린 파일 대화 상자가 있습니다.

이러한 물건을 끄면 사용자가 폴더 이름을 "파일 이름"콤보 상자에 입력하고 Enter 키를 누르면 폴더 이름을 입력하면 현재 표시된 폴더를 변경하게하는 대화 상자의 내장 동작이 비활성화됩니다.

그 행동을 다시 추가하고 싶습니다. 후크 절차를 통해 이런 일이 발생하는 시점을 감지 할 수 있습니다. 확인 버튼을 숨기고 가속기를 끄고 컨트롤에 내 자신의 "선택"버튼을 넣었습니다. 이것은 내가 cdn_fileok 메시지를받는 유일한 시간은 사용자가 입력 한 후 텍스트 상자에 입력 할 때입니다.

그러나 현재 디렉토리를 변경하기 위해 대화 상자를 프로그래밍 방식으로 알려주는 방법을 알 수 없습니다.

나는 창에서 shelldll_defview 컨트롤에 일종의 메시지를 보내서 이것을 달성 할 수 있다고 생각했지만 그에 대한 문서를 찾을 수 없었습니다.

도움이 되었습니까?

해결책 2

나는 주변의 작품을 알아낼 수 있었다.

유효성 검사가 꺼지면 ""로 끝나는 디렉토리 이름으로 입력하면 여전히 표시되는 폴더가 변경되지만 ""로 끝나지 않는 디렉토리 이름으로 입력하면 그렇지 않습니다.

Spy ++를 사용하면 Enter가 닿을 때 WM_COMMAND 메시지가 Hi-Dorder Word가 Bn_Clicked이고 낮은 주문이 ID_OK 인 WPARAM 인수를 사용하여 공통 대화 상자 컨트롤로 전송 될 것임을 알 수있었습니다.

공통 대화 상자를 서브 클래스하면 메시지를 가로 채고 파일 이름 콤보 상자에서 텍스트를 변경하고 메시지를 원래 하위 클래스 절차로 전달한 다음 텍스트를 뒤로 변경할 수 있습니다.

약간의 해킹이지만 대화 상자에서 원하는 동작을 얻을 수 있습니다.

다른 팁

직접적인 답변은 확실하지 않지만 Spy ++ 또는 다른 메시지 스누핑 프로그램이있는 경우 일반 OpenFilename 대화 상자 디렉토리를 변경할 때 지나가는 메시지를 확인하십시오. 당신은 거기에서 답을 발견 할 수 있습니다 (어려운 방법이지만).

다른 사람은 대답을 손에 쥐고있을 수 있습니다. 그들이하기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top