2011-01-11 6 views
1

나는 그 안에 자식 창문이있는 창문이 있습니다. 자식 창은 약 1000 픽셀의 수직 공간을 차지합니다. 그러나 사용자가 항상 사용할 수있는 세로 공간이 1000 픽셀 인 것은 아니며 500 픽셀 또는 600 픽셀 정도의 작은 크기를 가질 수도 있습니다.win32에서 윈도우의 뷰포트를 변경하려면 어떻게해야합니까?

나는이 창을 500 픽셀 높이로 표시 할 수 있고 전체 내용을 보려면 창을 위아래로 스크롤 할 수 있기를 원합니다. 창은 항상 높이가 500 픽셀이어야하지만 내부의보기가 변경되어야합니다.

어딘가에 스크롤 막대를 추가하여 사용자가보고 싶은 부분을 선택할 수 있다고 가정합니다. Windows는 일반적으로 창 내용을 높이 0에서 높이 500으로 페인트합니다. 대신에 "높이 250에서 높이 750까지 페인트"라고 말하면 어떻게됩니까?

SetViewportOrgEx 등의 기능으로 뷰포트를 설정할 수 있다는 것을 알고 있지만 이러한 기능에는 장치 컨텍스트가 필요합니다. 언제 "영구적"으로 유지하려면 해당 기능을 호출해야합니까? 창에서 WM_PAINT 메시지를 받으면 전화를합니까? 아니면 다른 시간에? 그리고 그 가족의 어떤 기능을 사용하고 싶습니까?

편집 추가 : 실제로 하위 창의 위치를 ​​변경하고 싶지 않습니다. 즉, 동일한 위치에 머물러 있어야하며 변경할 수있는 유일한 것은 창으로의보기입니다.

감사합니다.

답변

1

스크롤 막대 변경에 대한 메시지가 표시되면 SW_SCROLLCHILDREN 플래그로 ScrollWindowEx를 호출하면 다른 모든 항목과 함께 스크롤하도록 자식 창이 표시되어야합니다. 이것은 올바른 위치에 놓아야합니다.

+0

실제로 하위 창의 위치를 ​​변경하고 싶지는 않습니다. 즉, 동일한 위치에 머물러 있어야하며 변경할 수있는 유일한 것은 창으로의보기입니다. – Colen

+0

이렇게 보이는 것은 결국 우리가해야 할 일입니다. 감사! – Colen

+0

그래 ... 내가 말할 수있는 한, 뷰포트를 변경하면 일반적으로 자식 창이 그려지는 위치가 변경되지 않는다. 적어도 당신이 윈도우 프로 시저에서 바꿀 경우에는 그렇지 않다. 플레이 할 DC. 뷰포트는 채색 된 재료의 위치를 ​​결정하지만 자식 창은 그 재료와 별개의 것으로 보입니다. – cHao

관련 문제