2013-12-23 3 views

답변

4

여기에는 실제로 두 가지 다른 점이 있습니다. 이동/크기 조정 문제는 응용 프로그램이 응용 프로그램 자체에서 명시 적으로 처리하지 않는 메시지를 처리하는 데 사용하는 Windows DefWindowProc 함수로 인해 발생합니다. 이동 또는 크기 조정의 경우에는 차단되어 대부분의 메시지를 처리 ​​할 수있는 새 메시지 대기열을 만들지 만, 응용 프로그램의 기본 이벤트 대기열에 계속 전달할 메시지가 약간 있습니다 (예 : WM_TIMER). this answer에서 더 많은 정보를 찾을 수 있습니다.

두 번째 문제는 프로그램이 창 내부의 픽셀을 "소유"하고 다른 창에 의해 덮여지지 않은 픽셀 만 소유한다는 것입니다. 창을 더 작게 만들 때 모서리의 픽셀을 창 테두리 나 창 뒤의 내용을 표시하려면 덮어 써야합니다. 창을 더 크게 만들 때, 일부 드라이버는 새로 획득 한 픽셀을 검정색으로 자동 설정하고, 다른 드라이버는 이전에 있던 창 (일반적으로 창 경계의 일부)을 그대로 둡니다. OS는 윈도우가 그 크기 인 마지막 시간에 특정 픽셀의 색을 가지고 있는지 기억하지 못한다. 왜냐하면 대부분의 시간은 프로그램이 신경 쓰지 않기 때문이다. 대신, 창은 응용 프로그램이 창을 다시 그려야 함을 나타 내기 위해 WM_PAINT 메시지를 보냅니다. 프로그램은 이것을 직접 처리하거나 추상화 한 GLFW와 같은 라이브러리를 사용해야합니다. 또한 새로운 윈도우 크기로 glViewport을 호출하여 크기 조정 이벤트를 처리해야합니다.