반응형
본업에서 MDI 프로그램을 개발 및 운영 중이다.
어느 날 특정 사용자에게서만 타이틀과 바로 아래 도킹 리본 메뉴바 사이에 구멍(?)이 난 것처럼 빈 공간이 생겨 있는 현상이 인입되었다.
아주 극 소수(어쩌다 1~2명?)에게서 아주 가끔 들리는 현상이긴 하지만 궁금해 하던차에 한 번 확인해 볼 만한 내용을 발견하여 기록하게 되었다.
일반적으로 윈도우 프로그래밍 시 어떤 윈도우의 영역을 얻어올 때 사용하는 윈도우 API 함수는 GetWindowRect를 사용한다.
그런데 이는 윈도우 테마에 따라 그림자 영역까지도 포함된 영역을 얻어올 수 있다.
이 문제의 해결법으로는 실제로 그림을 그리는 DWM API 함수를 사용하면 된다고 한다.
DwmGetWindowAttribute 함수에 DWMWA_EXTENDED_FRAME_BOUNDS 속성으로 영역을 얻으면 실제 윈도우 영역을 구할 수 있다.
RECT rcReal;
DwmGetWindowAttribute(hWnd, DWMWA_EXTENDED_FRAME_BOUnds, &rcReal, sizeof(rcReal));
이 방법을 사용하여 수정해서 도킹 윈도우에도 적용되는 내용인지 확인해 보아야겠다.
결과 확인 후 아래로 내용 추가하겠다.
참고자료 및 출처
https://m.blog.naver.com/tipsware/223829245183
대화 상자의 윈도우 영역 정확하게 체크하기
대화 상자는 화면에 보이는 영역과 실제 영역이 다른 경우가 많습니다. 예를 들어, 대화 상자 영역을 캡처...
blog.naver.com
반응형