質問

(MFC Question)CScrollViewで現在表示されているクライアント領域を判断する最良の方法は何ですか?可視部分のサイズだけが必要なので、GetClientRect()はここでは機能しません。

役に立ちましたか?

解決

GetClientRect()を使用する必要がありますが、間違った質問をしていると思います。スクロールビューで、物理的にスクロールされる非常に大きなクライアントウィンドウがあるわけではありません。代わりに、スクロールすると、DCのviewportextとマッピングモードが調整され、ビューが実際よりも大きく見えるようになります。したがって、現在のビューポートの右下隅の左上隅から線を描画する場合は、GetViewPortOrg()およびGetViewportExt()が必要です。これらが間違った値を返す場合、CScrollViewの使用に問題があります。 SetScrollSizes()を呼び出しましたか?

他のヒント

OnDraw()関数内で、pDC-> GetViewportOrgおよびpDC-> GetViewportExtを呼び出すことができます。

編集:申し訳ありませんが、ビューポート範囲はスケーリングファクターにすぎないことを忘れていました。ここで本当に必要なのはクライアントの四角形であることに同意します。

はい、あなたは両方とも正しいです。 GetClientRectはまさに私が必要としていたものでした。私の脳のおなら...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top