2011-01-11 69 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