2011-08-11 10 views
1

CFileDialog (Vista 스타일 사용)에서 폴더보기를 설정하는 표준 방법이 있습니까? 자세히보기 및 일부 사용자 지정 열을 표시하려고합니다.CFileDialog (MFC) 폴더보기 설정

내 응용 프로그램에서 만든 파일에 대한 응용 프로그램 별 정보를 표시하는 Windows 7 열 처리기를 구현했습니다. 그러나 탐색기 창이나 공통 파일 대화 상자에서 이러한 사용자 지정 열을 보려면 폴더보기를 세부 정보로 수동 설정 한 다음 원하는 특정 열을 선택해야합니다.

잘 작동하지만 사용자가보기 스타일을 변경할 때까지 앱의 파일 선택기가 자세히보기에 이러한 열을 자동으로 표시하는 것이 목표입니다.

나는 다양한 방법으로이를 조사했으며 실행 가능한 해결책을 찾지 못했습니다. 셸 속성 가방은보기 형식뿐만 아니라 열 형식과 너비를 저장하는 것처럼 보이지만 대부분 이진이며 분명히 문서화되지 않았습니다. 가방 속성을 복사하면 뷰 설정을 전환 할 수 있지만 이것은 부서지기 쉬운 것 같습니다.

모든 포인터 또는 다른 도움을 주시면 대단히 감사하겠습니다.

답변

1

나는 비스타의 파일 대화 상자에서보기 설정을 변경하려면 7

비스타/윈도우의 탐색기로드 열 처리기를 생각하지 않는다 :

또는
Check OS version (needs Vista or higher)  
Not sure which event is raised on startup, OnFolderChange maybe? 
assuming OnFolderChange is raised, override CFileDialog::OnFolderChange: 
call GetIFileSaveDialog/GetIFileOpenDialog to get IFileDialog 
//begin undocumented behavior 
QI for IServiceProvider from IFileDialog 
QS for SID_SFolderView with IID_IFolderView2 
call IFolderView2::SetViewModeAndIconSize 
//end undocumented behavior 
clean up COM interfaces 

당신이 문서화되지 않은 방법 # 2

시도 할 수 있습니다
//begin undocumented behavior 
QI for IServiceProvider from IFileDialog 
QS for SID_STopLevelBrowser with IID_IShellBrowser 
call IShellBrowser::QueryActiveShellView to get IShellView 
QI IFolderView2 from IShellView 
call IFolderView2::SetViewModeAndIconSize 
//end undocumented behavior 
clean up COM interfaces 
+0

나는이를 컬럼 핸들러라고 불렀지 만 속성 시스템 COM 인터페이스를 사용하여 사용자 정의 컬럼과 그 안에 들어갈 데이터를 보여줍니다. 그건 비스타와 7에서 잘 작동합니다 (XP에서는 이전 IColumnProvider를 구현해야합니다.하지만 그것은 또 다른 이야기입니다). 고마워, 나는 그 접근법을 조사 할 것이다. – cue

+0

최대 투표권을 얻었 으면 좋겠다. 최종 결과는 IFileDialog -> IServiceProvider의 IFolderView2를 사용하여보기를 세부 정보 모드로 변경했습니다. 그런 다음 IServiceProvider -> IShellBrowser -> IShellView에서 IColumnManager를 사용하여 사용자 정의 열에 대한 속성 저장 프로 키를 사용하여 열을 설정할 수있었습니다. 감사합니다. – cue