2010-06-23 2 views
3

응용 프로그램이 종료 될 때 System::Windows::Forms::Form 상태를 저장하려고합니다. 창 크기, 위치 및 창 상태를 아무런 문제없이 기록 할 수 있지만 창을 닫을 때 창이 최대화되면 ::Size 구성원이 창의 최대 크기를 기록합니다.폼의 최대화되지 않은 창 크기는 어떻게 얻습니까?

최대화되지 않은 크기를 기록하는 방법이 있습니까? 아니면 최대화 이벤트를 가로 채고 수동으로 기록해야합니까?

답변

2

이것은 쉽게 사용할 수 없으며 P/Invoke GetWindowPlacement를 사용해야합니다. 가장 좋은 방법은 양식이 적절한 상태에있는 경우에만 창 크기를 기록하는 것입니다. 예를 들어 :

protected override void OnResize(EventArgs e) { 
     if (this.WindowState == FormWindowState.Normal) 
      Properties.Settings.Default.WindowSize = this.Size; 
     base.OnResize(e); 
    } 
+0

GetWindowPlacement는 WorkingArea의 위치는 쉽게 (당신이 할 경우, 당신의 윈도우 시스템 작업 표시 줄의 높이로 이동합니다) – EricLaw

+0

오히려 ScreenArea 좌표와 혼합 할 수있는 좌표를 기록하는 것을 제외하고 중대하다 모든 크기 조정시이 값을 계속 유지하는 것보다 종료시에 this.WindowState! = FormWindowState.Normal인지 확인하고 최대화 또는 최소화 된 경우 RestoreBounds 속성을 대신 사용할 수 있습니다. – EricLaw

+0

지속적으로 지속되지 않습니다. 프로그램이 Save() 메소드를 호출 할 때까지. 프로그램 종료시 가장 잘 수행됩니다. –

관련 문제