2014-12-23 2 views
0

Win + D를 누르면 StateChanged 이벤트가 발생하지 않지만 ResizeMode가 CanResize이면 StateChanged 이벤트가 발생합니다.wpf StateChanged 이벤트가 발생하지 않습니다.

<Window x:Class="WpfApplication3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" WindowStyle="None" ResizeMode="NoResize" WindowState="Maximized"> 
<Grid> 
</Grid> 

나는 메시지 루프 및 디버그를 후크 경우에, 나는 "NoResize"

IntPtr mainWindowPtr = new WindowInteropHelper(sender as Window).Handle; 
HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr); 
mainWindowSrc.AddHook(Hook); 

와 D + 승리에에서 결코 생각하지하지만 마이크로 소프트 스파이 ++와 스파이 경우,이 Win + D의 WM_WINDOWPOSCHANGED 메시지

무엇이 잘못 되었습니까? 그리고 어떻게이 메시지/이벤트를 잡을 수 있습니까? 당신은 D윈도우 + 을 누르면

답변

1

귀하의 응용 프로그램 Window하지의 크기가 변경되고, 그래서 StateChanged 이벤트가 발생해야 할 이유가 없다. 응용 프로그램을 실행하고 ALT + Space을 눌러 Window 상태 옵션을 확인하면 확인할 수 있습니다. 최대화, 최소화 및 복원 옵션이 회색으로 표시되어 선택할 수 없다는 것을 알 수 있습니다.

속성을 NoResize으로 설정하고 CanResize으로 설정하면 다른 결과가 나타나는 이유를 설명했기 때문입니다. 따라서 운영 체제가 무엇이든간에 + 을 누를 때 Window을 숨기려면 해당 크기를 조정해야합니다.

+0

답변 해 주셔서 감사합니다. Sheridan. 하지만이 문제에 대한 해결책을 찾고 있어요. – Alex

관련 문제