• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CScrollViewの使用方法について)

CScrollViewの使用方法について

このQ&Aのポイント
  • VC++でCStatic型のピクチャーコントロールに線画の描画を行い、スクロールバーで表示領域を移動させたいと考えています。
  • CScrollViewのクラスを作成し、m_StaticFlameに関連づけてスクロールバー付きの表示にする方法を検討していますが、具体的な手順や正しさについて分かりません。
  • CScrollViewを使用して描画領域を大きく取り、スクロールバーを使って表示領域を移動できるようにする方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

ピクチャーコントロールの変わりにCScrollViewですか? ピクチャーコントロールと仰ってるという事は、ダイアログですよね? (違う場合もありますけど・・・) もしそうならば、この状態でCScrollViewを使うのは困難かと思います。 CScrollViewを使いたいのは、表示領域をスクロールバーによって変えたいだけですよね?であれば、普通にCWndから派生させて、作るウィンドウにWS_HSCROLLやWS_VSCROLLスタイルをつけてあげればスクロールバーも出ますので、そちらをお勧めします。 でスクロールバーがついた状態で・・・ まず、flowergooさんはGDIによって線などを描画することは、できるのですよね?であれば、あとはスクロールバーの位置によって描画する座標を変更してあげればよいだけです。 例えば pDC->MoveTo (0, 0); pDC->LineTo (100, 100); のように単純な線の場合で横方向にスクロールさせたいのであれば pDC->MoveTo (x, 0); pDC->LineTo (x + 100, 100); として xの値をスクロールバーから取得すればよいわけです。 まーこんなことをしてると管理も大変ですが、基本はこんな感じになると思います。実際には、座標管理(座標変換)を行う関数やクラスを経由して描画する座標位置を求めることになると思いますが。

flowergoo
質問者

お礼

ご回答頂きありがとうございます。 回答者様のおっしゃる通り、作成しているプロジェクトはダイアログです。 CScrollViewはやはり基本的にMDIかSDIで使うのものなのですね。 コントロールにWS_HSCROLL等のスタイルをつけてみます。 GDI描画につきましては色々と経験しているので分かるのですが、スクロールの対応方法については良い参考となりました。 早速試して見ます。