문제

MFC 응용 프로그램에 계층화 된 창이 설정되어 있습니다. 나는 창을 렌더링하는 방식의 다양한 부분을 사용자 정의 할 수 있도록 내 자신의 CDIALOG 파생을 설정했습니다. 최소화하고 최대화에 대해 걱정하기 시작할 때까지 모든 것이 잘 작동합니다.

최소화 또는 최대화를 클릭하면 창이 예상대로 정확하게 반응합니다 (예 : 레이어드 창을 사용하지 않을 때와 정확히). 그러나 창을 복원하면 매우 이상한 일이 발생합니다.

내 테스트 창의 기본 클라이언트 사각형은 324x102입니다. 예를 들어 최소화 된 상태에서 복원 할 때 CX와 CY는 Onsize로 전달 된 CY가 994, 550입니다. 그런 다음 getClientRect (Onsize 내)을 수행하면 창에보고 된 크기입니다. 이상하게도, 내가 getwindowrect를한다면 나는 올바른 크기를 되 찾을 수 있습니다 (분명히 내 모든 비 공간 영역을 포함하여).

여기서 무슨 일이 일어나고 있는지, 더 중요한 것은 GetClientRect가 올바른 정보를보고하도록 어떻게 고칠 수 있습니까?

미리 감사드립니다!

도움이 되었습니까?

해결책

나는이 문제를 해결하기 위해 일종의 해킹을 생각해 냈습니다. Onsize와 Onmove에서 나는 내가받는 (c) x와 (c) y를 무시하고 getwindowrect에서 모든 것을 해결합니다. 응용 프로그램은 이제 예상대로 반응합니다. 코드를 [해킹] 주석으로 표시했습니다. 이것은 매우 이상해 보인다. 나는 왜 이런 일이 일어나고 있는지 듣고 싶다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top