VC++でCStatic型のピクチャーコントロール(例:m_StaticFlame)に線画の描画を行っています。(描画領域=表示領域)
ピクチャーコントロールの表示領域には限度があるため、ワープロやCADと同じように描画領域を大きく取って一部分だけを表示し、スクロールバーで表示領域を移動させたいと考えております。
良い方法をご存じの方いらっしゃいましたら教えて頂けないでしょうか。
今の所、Class WizardでCScrollViewのクラス(CScrollViewTest)を作成し、m_StaticFlameに関連づけてスクロールバー付きの表示にしようと考えていますが、描画領域の定義からCScrollViewTestやm_StaticFlameとの関連付け、表示方法、さらにこの方法が正しいかどうかも分かりません。
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の値をスクロールバーから取得すればよいわけです。
まーこんなことをしてると管理も大変ですが、基本はこんな感じになると思います。実際には、座標管理(座標変換)を行う関数やクラスを経由して描画する座標位置を求めることになると思いますが。
ご回答頂きありがとうございます。
回答者様のおっしゃる通り、作成しているプロジェクトはダイアログです。
CScrollViewはやはり基本的にMDIかSDIで使うのものなのですね。
コントロールにWS_HSCROLL等のスタイルをつけてみます。
GDI描画につきましては色々と経験しているので分かるのですが、スクロールの対応方法については良い参考となりました。
早速試して見ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ダイアログをスクロールさせるには
C言語・C++・C#
-
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
MFCでのスクロールバーの扱い
C言語・C++・C#
-
5
MFCで水平スクロールバー
C言語・C++・C#
-
6
他のウィンドウのボタンを自動的に押したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
word
-
VB6,リストボックスの特定行の...
-
ビットマップを表示させる(MFC)
-
移動する線を描画したい(何と...
-
NVIDIAのシェーダーキャッシュ
-
C++, MFCにてゲームプログラミング
-
VBAにGDI+を参照させる方法
-
TextBoxに文字を書いても表示さ...
-
逐次的なグラフ表示の方法
-
[VB.net] DataGridViewの列ヘッ...
-
OnDrawが呼び出されません
-
クライアント領域のコントロー...
-
Labelの文字をスクロールする際...
-
ウインドウサイズを変更しても...
-
UpdateData( FALSE); による文...
-
VB.netでのライン描画方法がわ...
-
Delphiでキューを作りたい
-
MFCでOnPaintのタイミング
-
CScrollViewの使用方法について
-
panelのスクロール表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
word
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
Minecraft 統合版(PC)の描画距...
-
google Colabでmatplotlibの描...
-
TextBoxに文字を書いても表示さ...
-
[VB.net] DataGridViewの列ヘッ...
-
UpdateData( FALSE); による文...
-
OneNote 2010 文字と描画がずれる
-
Labelの文字をスクロールする際...
-
InvalidateRectの使い方について
-
VB.netでのライン描画方法がわ...
-
CStaticコントロールの静的イメ...
-
VC++プログラムをつかったBMP画...
-
WM_SIZEとWM_SIZINGの違い (Win...
-
エクセルでガンチャートを作成...
-
c言語を使いダイアログにbmpを...
-
WM_PAINT
-
MFCのタイマーのつかい方を教え...
おすすめ情報