본문 바로가기
프로그래밍/개발일지

Winform 최소화 전 사이즈 저장

by 개발하는군인 2023. 4. 18.

윈도우 최소화 상태에서 닫기 버튼을 눌러 종료 후 재실행시 기존 윈도우 창 사이즈가 아닌 기본 설정된 크기로 실행되는것을 확인했는데 분석을 해보니 종료시에만 해당 크기를 저장하는 로직으로 되어있었다.

 

로직 자체는 문제가 없으나  최소화 상태에서 크기와 위치를 구하면 위치가 - 값으로 나오는것을 확인 할 수 있다.  값을 토대로 그릴수 없으니 기본 설정된 크기로 나오는 것이였다.  해당 내용은 나중에 개선이 필요 할 수 있기에  간단한 샘플을 만들고 기록 해둔다.

 

PS

기록을 해두고 집에와서 찾아보니  Resize 이벤트시 해당 windowstate 가 최소화 된건지 확인하여 사이즈를  저장 할때는 이미 사이즈가 최소화된 상황의 크기라 최소화되기전에 크기가 아니다. ResizeBegin 이벤트는 사용자가 사이즈를 변경했을때 발생하는 이벤트라 해당이 안된다. 그럼 윈도우는 어떻게 최소화 되기전의 크기를 알고 다시 그리는걸까  조금 더 찾아본다.

 

검색해보니 Win32API를 사용해서 저 최소화 버튼을 누르는 순간 윈도우 메시지를 후킹해서 값을 저장하는 방식이 있을 수 있다고 하지만 그냥 간단하게  구현해보겠다. 

 

예제 

 

예제 코드 로직은 다음과 같다. (수정필요)

 

1. FORM이 최초 로드 될때 해당 사이즈를 저장한다.

2. ResizeBegin 이벤트를 추가해 사이즈가 변경될때 해당 사이즈를 계속 업데이트 한다.

3. 최소화 버튼을 누르더라도 한번이라도 변경이 있었을 경우에는 ResizeBegin에 의해 사이즈가 업데이트 되었을 것이며, 한번이라도 변화가 없었을 경우에는 처음 로드된 사이즈와 동일 하기 때문에 최소화 하기전  사이즈라는것이 보장된다. 

 

https://github.com/ktn1075/study/tree/main/DevelopmentDiary/DairyProject/WinSizeSav