

VC++6.0 MFC
お世話になります。
メニューからモードレスダイアログを発生させてそこに文字列を書き出しているのですが、文字列が多い場合、入りきれません。そこでダイアログリソースに標準スクロールバーを付加させました。しかし、ソースが煩雑になっていきます。
調べてみれば、ウィンドウでは基本クラスをCScrollViewにすることにより、スクロールバーのメッセージ処理コードのを大半を肩代わりしてくれることを知りました。
そこで、ダイアログでもこのように便利なことはできないかと質問をした次第です。
できるのであれば、方針などを教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
CScrollViewは、Document-View構造を前提としていますから、ダイアログにそのままでは適用できませんが、CWndを継承したクラスにCScrollViewから必要なコードを持ってきてCScrollWndみたいなくラスをつくってみては?MFCを使う場合には、ソースが公開されていますので、よくそんなことをやってました。
CScrollViewの
OnKeyDown
OnLButtonDown
OnRButtonDown
OnSize
OnHScroll
OnVScroll
OnMouseWheel
とかのメッセージハンドラと
SetScrollSize
SetScrollTotalSize
SetScrollPageSize
SetScrollLineSize
GetScrollTotalSize
GetScrollPageSize
GetScrollLineSize
GetScrollPosition
ScrollToPosition
CenterOnPoint
とかのメソッドぐらいをCWnd継承クラスに付加すれば、CScrollWndになりますよ。
ただ、MFCもそんなに再利用性の考慮されたソースではないので、細かな修正がちょこちょことめんどくさいですが...
この場合めんどくさいのは、縦横のスクロールバーの表示/非表示によって描画領域の調整が必要なところがわかりにくい。
でも、ほんとにめんどくさいのは、スクロールバーとの連動よりも、テキストの描画ロジックだと思いますけど...。編集がなければそんなでもないですけどねぇ。テキスト処理に慣れてれば。
これを見て大変そうとか思うのなら、市販のコントロールとかを探して見たほうがいいかもしれません。
回答ありがとうございます。
確かに自分で作るのはめんどくさそうですね。
あまり時間がないので別の方法を採りたいと思います。
ただ、クラスを作る方針は勉強になります。
何かに生かしていければと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのコントロールツール...
-
コントロールの書式設定で、“コ...
-
DateTimePickerでに年月までし...
-
CEdit の内容が変わった時にメ...
-
スピンボタンを右クリックして...
-
フォームでPDFを表示させた...
-
モードレスダイアログのタブ移動
-
プロパティシートのタブの名前...
-
regsvr32でActiveX登録を行ったocx
-
警告表示を非表示にしたい
-
コモンダイアログコントロール...
-
連続で印刷すると画像が更新さ...
-
VB6でタブコントロールが見つか...
-
ActiveXコントロールを.NETにイ...
-
引数にコントロール名を使用し...
-
EXCELVBA リストボックスで選択...
-
MFCのプロジェクト作成時にコモ...
-
ダイアログベースのウィンドウ...
-
Excel VBAでのMultipageの選択
-
WS_TABSTOPが機能するコントロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
スピンボタンを右クリックして...
-
ActiveXコントロールを.NETにイ...
-
DateTimePickerでに年月までし...
-
コモンダイアログコントロール...
-
フォームでPDFを表示させた...
-
EXCELVBA リストボックスで選択...
-
CEdit の内容が変わった時にメ...
-
regsvr32でActiveX登録を行ったocx
-
アイテムを点滅させる
-
TabControlとToolBarの背景色変更
-
VisualStudio MFC変数が追加で...
-
空のリストビューで1行おきに...
-
連続で印刷すると画像が更新さ...
-
VBAでリストボックス内で↑↓の操...
-
エクセル - リストボックスのマ...
-
MFC・ダイアログベースで、ダイ...
-
ワードのドロップダウンリスト
-
MFCのプロジェクト作成時にコモ...
おすすめ情報