Code/Windows

C# LocationChanged보다 최대화/복원 먼저 감지

Segel 2021. 10. 22. 07:23

문제:

    LocationChanged 트리거 시 실행될 코드보다 최대화/복원 시 실행될 코드가 먼저 실행되어야 함

 

해결:

protected override void OnSourceInitialized(EventArgs e)
{
	base.OnSourceInitialized(e);
	((HwndSource)PresentationSource.FromVisual(this))?.AddHook(HookProc);
}
private const int WM_SYSCOMMAND = 0x0112;

private const int SC_RESTORE  = 0xf122;
private const int SC_MAXIMIZE = 0xf032;

private IntPtr HookProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    switch (msg)
    {
        case WM_SYSCOMMAND:
            switch (wParam.ToInt32())
            {
                case SC_MAXIMIZE:
                    // 최대화 시
                    break;
                case SC_RESTORE:
                    // 복원 시
                    break;
            }
            break;
     }
}
반응형