2016-11-23 3 views
1

GetOpenFileName을 사용하여 C++에서 파일을 열 때, lpstrInitialDir으로 "컴퓨터"가상 위치에서 초기 디렉토리를 설정할 수 있습니까?기본 디렉터리 '컴퓨터'에서 GetOpenFileName을 열 수 있습니까?

감사합니다. Lee.

+0

시도해 보셨습니까? 그렇지 않은 경우 : 왜 안 되니? –

+1

Windows 7에서 열기 또는 저장 대화 상자 및 lpstrInitialDir에서 현재 디렉터리를 변경 한 경우 프로그램에서 처음 열거 나 저장 대화 상자를 호출 할 때 프로그램에서 사용한 첫 번째 lpstrInitialDir와 동일하며 사용 된 마지막 "현재 디렉터리" lpstrInitialDir에 지정된 것 대신 https://msdn.microsoft.com/it-it/library/windows/desktop/ms646839(v=vs.85).aspx –

+0

"컴퓨터"가 작동하지 않습니다. 유효하지. – user3725395

답변

3

사용하려는 위치가 파일 시스템의 일부가 아니기 때문에 GetOpenFileName으로는이 작업을 수행 할 수 없습니다. 오히려 더 넓은 쉘 이름 공간의 일부입니다.

GetOpenFileName에 대한 설명서를 보면 Common Items Dialogs로 대체되었습니다 (10 년 전 사실). 이 대화 상자에서는 초기 폴더를 쉘 항목으로 지정할 수 있습니다.

1

Vista보다 오래된 Windows를 지원해야하는 경우 IFileDialog을 사용할 수없는 경우 셸 폴더 GUID를 지정하십시오. 예를 들어 GUID는 20D04FE0-3AEA-1069-A2D8-08002B30309D입니다. 당신은 이런 식으로 지정할 수 있습니다

ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; 

그러나,이 방법은 거의 때문에 그래서 behavioral changes

에, 나중에 윈도우 7에 실패하고 운명 것을 주목할 가치가있다, 당신은에 IFileDialog를 사용하는 것이 더 낫다 Vista 이상.