2011-01-11 66 views
1

我有一個裏面有兒童窗戶的窗戶。兒童窗戶佔據了大約1000像素的垂直空間。但是,我們的用戶並不總是有1000像素的垂直空間可用 - 它們可能只有500或600像素。如何在win32中更改窗口的視口?

我希望能夠以500像素高的大小顯示此窗口,並讓用戶在窗口上下滾動以查看完整內容。該窗口應始終爲500像素高,但其中的視圖應該改變。

假設我可以在某處添加滾動條,以便用戶可以選擇他希望看到的窗口的哪一部分。 Windows通常將窗口內容從高度0繪製到高度500;例如,我怎樣才能告訴它「從高度250到高度750」?

我知道我可以使用像SetViewportOrgEx等功能來設置視口,但是這些功能需要設備上下文 - 如果我希望它們是「永久」的,我什麼時候打電話給他們?當我從Windows獲取WM_PAINT消息時,我會給他們打電話嗎?或者在其他時間?我想使用那個家族的哪些功能?

編輯補充:我不想真正改變孩子窗口的位置 - 他們應該保持在同一個位置,唯一應該改變的是窗口的視圖。

感謝。

回答

1

如果(當您收到有關滾動條更改的消息時),請使用SW_SCROLLCHILDREN標誌調用ScrollWindowEx,應該讓子窗口與其他所有內容一起滾動。這應該使他們處於正確的位置。

+0

我不想真的改變孩子窗戶的位置 - 他們應該保持在同一個位置,唯一應該改變的是窗戶的視圖。 – Colen 2011-01-11 02:46:09