2012-02-06 1 views
5

저는 항상 특정 양식을 맨 위에 표시해야하는 응용 프로그램을 작성하고 있습니다 (이것은 고객 요청입니다). 지금까지 SetWindowPos을 사용하고 있습니다. 기능을 HWND_TOPMOST 값으로 설정하면 정상적으로 작동하지만 Windows 7 Flip 3D 기능이 활성화되면 내 앱이 정상적으로 유지되지 않습니다.Windows 7 Flip 3D가 활성화 된 경우에도 항상 맨 위에 양식을 만드십시오.

윈도우 7 플립 3D는

enter image description here

문제는, 내 양식이 다른 모든 창 상단에 머물 수있는 방법 윈도우 7 플립 3D가 활성화 된 경우에도?

+3

입니다/b/oldnewthing /)를 사용하지 않을 것의 예입니다. – Neil

+0

왜 그렇게하고 싶습니까? 사용자가 제거 프로그램을 테스트하도록 하시겠습니까? –

+1

@DavidHeffernan 사용자가 항상 볼 수 있어야하는 산업 시스템의 실시간 데이터를 응용 프로그램에 표시하기 때문에 고객 요청입니다. – Salvador

답변

19

나는 얼마 전 DWMFLIP3D_EXCLUDEABOVE 값으로 DWMWA_FLIP3D_POLICY 속성을 modyfing DwmSetWindowAttribute 기능을 사용하여이 작업을 수행.

이 코드

uses 
    Winapi.DwmApi; 

procedure TForm40.FormCreate(Sender: TObject); 
var 
    pvAttribute: Integer; 
begin 
    pvAttribute:= DWMFLIP3D_EXCLUDEABOVE; 
    if DwmCompositionEnabled then 
    DwmSetWindowAttribute(Handle, DWMWA_FLIP3D_POLICY, @pvAttribute, Sizeof(Integer)); 
end; 

을 시도하고 이것은 당신이 의심의 여지가 http://blogs.msdn.com ([oldnewthing]에 끝날 것 않는 해킹 결과

enter image description here

+0

대단히 감사합니다. – Salvador

+3

Raymond Chen이 당신을 미워할 것입니다. EMBarbosa

+0

+1 멋진 작품. – NeverHopeless