공통 대화 상자의 목록보기에서 선택한 항목의 텍스트를 가져올 수 있습니다. 그러나 하나는 PIDL을 얻을 수 없으며 사용자가 알려진 확장 (기본)을 숨기도록 선택한 경우 확장자 나 PIDL없이 어떤 파일을 선택했는지 알 수 없습니다. 이 문제를 해결하기 위해공통 파일 대화 상자에서 현재 선택 파일의 실제 이름을 얻으시겠습니까?
그래서 가지 방법이 될 수 있습니다
- 가 표준 파일 열기 대화 상자에서 IShellView를 얻습니다. 기본 IShellView는 PIDL이 현재 선택에 해당하는지 알 수 있습니다. 그래서 만약 내가 간단하게 IShellView 보류 얻을 수, 나는 황금 것입니다. 불행히도, 나는 그것을 할 CDM_xxx를 볼 수 없습니다. 그리고 나는 내 머리의 상단을 생각할 수 없다 그걸 얻을 수도 있습니다! :(
- 우리는 사실에 의존하는 데 사용
다른 어떤 아이디어?! 그 윈도우 9x, 2000, 그리고 LVITEM 데이터의 각 항목의 PIDL 저장된 공용 파일 대화의 XP 버전 (원래 신용) 폴 딜라 시아에 :
LPCITEMIDLIST pidlItem = (LPCITEMIDLIST) pListCtrl-> GetItemData (nItem)
그러나, 위의 비스타의 일반 컨트롤로 시작하고, 그 기술은 실패 :(
어떤 생각?
편집 : 목록보기에서 현재 선택한 항목뿐만 아니라 목록보기의 모든 항목에 대해이 정보를 얻을 수 있어야합니다.
EDIT2 : (1) [사용자 지정 버튼 대화 상자를 닫습니다 "미리보기"하지만 전달한다에 : 우리가 할 수있는 기능을 제공합니다 우리의 응용 프로그램의 이전 버전에서
: 난 너무 깊이 파고해야하는 이유 보기에 현재 표시된 항목 목록을 현재 강조 표시된 항목의 색인과 함께 표시 순서대로 app합니다. 이 목록은 완전히 지정되어야합니다. "J1329192"인 3 개의 파일을 봅니다 (실제로 "J1329192.xyz" "J1329192.xzy"및 "J1329192.zyx"의 3 개의 파일이 유용 할 때).
사용자는 "파일 이름 :"필드에 부분 파일 이름 필터를 입력 할 수 있으며 사용자가 선택한 정렬 순서대로 주어진 부분 필터와 일치하는 파일 만 일반 대화 상자에 표시됩니다. 따라서 사용자가 미리보기를 원했던 것을 앱에 정확히보고하려면 목록보기 컨트롤 (또는 공통 대화 상자 자체)에서 해당 정보를 쿼리 할 수 있어야합니다.
파일 대화 상자에 대한 다른 향상된 기능 - 사용자의 현재 선택을 미리보기 이미지로 표시하고 사용자 지정 최근 장소 인터페이스 등을 포함하는 내부 미리보기 창 포함 (많은 작업을 통해) Vista 이전. 포스트 비스타, 나는 벽에 벽에 부딪쳤다. 당분간은 표준 파일 대화 상자를 사용하여 고객과 잘 어울리지 않는 몇 가지 기능 만 제공합니다 (X 기능은 어떻게됩니까?)
다른 향상된 기능이 있지만 좋은 대략적인 개요. 그리고 그들은 모두 "정말로, 정직하게, 어떤 파일이 인덱스 X에서 볼 수 있는가?"에 대한 지식을 필요로합니다. 그리고 알려지지 않은 이유로 - Microsoft는 그러한 인터페이스를 제공 할 필요성을 느껴 보이지 않습니다. 사실 그들은 결코 그렇게하지 않았습니다.해킹과 리버스 엔지니어링을 통해서만 상황이 어떻게 작동하는지 파악하고 필요한 정보를 얻을 수있었습니다. 그리고 예, 그것은 지원되지 않습니다. 예, 필연적으로 MS가 우리 코드를 위반했습니다. 나는 그것들을 정말로 비난하지 않는다. 내가 불쾌하다고 느낀 점은 그들의 더 새롭고, 더 단단한 인터페이스가 이전 인터페이스보다 훨씬 더 닫히고 더 많은 인터페이스를 지원하지 않는다는 것이다. . 그것들은 거꾸로 한 걸음 더 나아갔습니다. 그리고 어떤 것도 진행하지 않았습니다 (진행의 이름으로).
CDM_GETFILEPATH의 문제점은 무엇입니까? – MSN
일반 대화 상자에서 사용자가 입력 한 것과 같은 기본 확장명을 포함하여 대화 상자에서 반환 된 파일 이름이 될 것이라고 생각하는 내용을 알려줍니다. 단순히 "목록보기에서 선택한 항목"이 아닙니다. – Mordachai
대신 GetItemData 먼저 GetItem과 캐스트 lParam을 호출합니까? 똑같다? – BostonLogan