2011-01-11 5 views
1

私はその中に子ウィンドウがあるウィンドウを持っています。子ウィンドウは約1000ピクセルの垂直スペースを占有します。しかし、私たちのユーザーは、利用可能な垂直空間が常に1000ピクセルであるとは限りません。win32でウィンドウのビューポートを変更するにはどうすればよいですか?

このウィンドウを高さ500ピクセルのサイズで表示し、ウィンドウの上下にスクロールして内容全体を表示させたいと考えています。ウィンドウのサイズは常に500ピクセルにする必要がありますが、ウィンドウ内のビューは変更する必要があります。

どこかにスクロールバーを追加できるので、ユーザーはウィンドウのどの部分を見たいのかを選択できます。 Windowsは通常、ウィンドウの内容を高さ0から高さ500にペイントします。代わりに「高さ250から高さ750にペイントする」と言ってもいいでしょうか?

SetViewportOrgExなどの機能を持つビューポートを設定できることは知っていますが、これらの機能にはデバイスコンテキストが必要です - いつそれらを永続化したいのですか?ウィンドウからWM_PAINTメッセージを受け取ったときに呼びますか?または他の時間に?その家族のどの機能が使いたいのですか?

編集する追加:私は実際に子ウィンドウの位置を変更する必要はありません - 同じ位置に留まる必要があり、変更する必要があるのはウィンドウへの表示だけです。

ありがとうございました。

答えて

1

SW_SCROLLCHILDRENフラグを指定してScrollWindowExを呼び出すと、スクロールバーの変更に関するメッセージが表示される場合は、子ウィンドウにスクロールするように指示する必要があります。これはそれらを正しい位置に置くべきです。

+0

子ウィンドウの位置を実際に変更する必要はありません。同じ位置に留まる必要があり、変更する必要があるのはウィンドウへの表示だけです。 – Colen

+0

これは結局一緒に行かなければならないものです。ありがとう! – Colen

+0

ええと...私が言うことができる限り、ビューポートの変更は通常、子ウィンドウが描画される場所は変更されません。少なくとも、ウィンドウプロシージャ内で変更すると演奏するDC。ビューポートはペイントされたものの位置を決定しますが、子ウィンドウはそれとは独立しているようです。 – cHao

関連する問題