2014-09-02 4 views
0

필자는 Delphi 애플리케이션에서 열어 본 새로운 Vista 스타일 Open/SaveDialog의 창 핸들을 얻고 싶습니다.Vista 스타일의 핸들을 얻는 방법 Open/SaveDialog?

OnShow를 구문 분석하여 이전 스타일 대화 상자에서 가능했지만 새 스타일 대화 상자에는 이러한 이벤트가 없습니다.

Windows의 모든 창 핸들을 반복 할 가능성이 있습니까?

감사합니다.


편집 : 내가 OpenDialog.Handle가 핸들을 반환 것을 알고 있지만 대화 상자가 표시되는 경우에만 (그렇지 않으면 0이다). 대화 상자를 표시 한 직후에 핸들을 잡으려면 이벤트가 필요합니다 (대화 상자에서 항목을 선택하거나 파일 유형을 변경하는 등의 사용자 조치가 필요 없음).

+1

'Handle' 속성은 어떻습니까? – TLama

+1

@ 스티브 핸들을 가지고 무엇을 할 것입니까? @tlama가 'Handle' 속성을 통해 핸들을 얻을 수 있다고 말했듯이, 당신이 다음에 할 일은 무엇인가? 대화 상자를 사용자 정의 하시겠습니까? –

+0

사용자 지정은 ['IFileDialogCustomize'] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775912.aspx) 인터페이스를 사용하여 수행해야합니다. –

답변

2

내 Delphi 응용 프로그램에서 열어 본 새로운 Vista 스타일 Open/SaveDialog의 창 핸들을 얻고 싶습니다.

대화 상자의 Handle 속성을 통해 사용할 수 있습니다.

아마도 대화 상자의 이벤트를 잡는 가장 쉬운 방법은 대화 상자를 표시하기 직전에 설정 한 CBT 후크를 사용하고 대화 상자를 닫으면 즉시 제거하는 것입니다.

+0

FWIW, 나는 틀린 질문을했다고 생각합니다. 나는 당신이 핸들을 사용할 필요가 있다고 생각하지만 핸들을 가지고 뭔가를 할 수 있도록 윈도우 생성시 알림을 찾고있다. 아마도 당신이 질문을 편집한다면 우리는 그것을 또한 커버 할 수있을 것입니다. –

+0

질문이 수정되었습니다. 감사합니다. – Steve

-1

TOpenDialog에는 대화 상자가 표시된 직후에 발생하는 OnShow 이벤트가있어서 핸들이 이미 설정되어 있으므로 OpenDialog.Handle을 가져올 수 있습니다.

EDIT : OnShow 이벤트를 사용하여 대화 상자 모양이 변경되었다는 것을 지적한 후 OnShow 이벤트를 사용하면 대화 상자 작동을 변경한다는 사실을 확인할 수있었습니다.

+0

아니, 'OnShow' 이벤트에 핸들러를 연결하면 더 이상'비스타 스타일 대화 '가 아닙니다. –

+0

무엇을 의미합니까? 아무런 차이가 없으며 TOpenDialog 소스 코드를 이해하면 거기에 아무 것도 없어야합니다. – SilverWarior

+0

핸들러를 'OnShow'에 연결하면 * explorer 스타일 대화 상자가 나타납니다. 소스는'TOpenDialog에있는 코드를 참조하십시오.DoExecute', 첫 번째 'if'테스트를 참조하십시오. 'FOnShow'가 붙으면 FileDialogWrapper가 실행되지 않고'GetOpenFileName'이 호출됩니다. 그러나 어쨌든, 시각적 인 차이는 정말 분명합니다. 하나는 [this] (http://i.msdn.microsoft.com/cc300434.fig01%28en-us%29.gif)이고 다른 하나는 [this] (http : //i.msdn.microsoft.com/ee662146.newsletter_2009_10_Burnett_07.png). 또한, 그 이유는 질문입니다, OnShow도 질문에 언급됩니다. –

관련 문제