![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
今回お聞きしたいことは
MFCでダイアログ上にリストコントロールとスクロールバー、またはピクチャーコントロールとスクロールバーを設置した際に、スクロールバーの移動に伴って、リストコントロール内の列や、ピクチャーコントロールに表示されている画像の見えている箇所を移動させることが出来るかどうか。
です。
まだ、本格的にプログラムを作り始めてるわけではないのですが、事前にこのような動作が実現可能かどうかお聞きしたく、質問させて頂きました。
もしご存知の方がいましたら、参考になるHPや方法を教えていただければと思っています。参考になるHPがなくても、実現可能かどうかだけ教えて下さるだけでも結構ですので、宜しくお願い致します。
開発環境は
Windows CE 6.0
Visual Studio 2005
です。
No.2ベストアンサー
- 回答日時:
>仮想リストを使用する場合に特に普通のリストと、
>プログラムを作成する点で違う箇所はありますでしょうか?
プログラム的には大きく違います。オーナードローを使用するため、
使用するイメージ、項目等の領域は自分で保持、管理しなければ
なりません。
しかし、描画の高速化、メモリ節約が出来るという点は、
大きなメリットです。
>リストコントロールだと自動でスクロールバーを表示してくれる
>みたいなのですが、現在開発している機器がタッチパネル式のため、
>自動で表示されるスクロールバーではタッチするには小さいため、
>出来れば別で大きい垂直スクロールバーを設置して動かしたいと
>思っています。
>そのようにする場合にはDlgにOnVScroll()のイベントを作成して、
>その関数内でリスト内の項目を移動させるように処理すればよい
>のでしょうか?
そういった実装を行ったことが無いので、なんともいえないので、私の予想ですが、
clistctrlのスクロールバーをfalseにするということですよね。
そうすると、スクロールエリアがないということになると思うので、
そもそも移動が出来ないと思います。
スクロールバーをtrueにして、その上に強制的に独立した
スクロールバーを配置するなら別だと思いますが。。。
普通はそんなことはしないですよね。
もしかしたら、clistctrlクラスをオーバーラップし、そこで
GetScrollBarCtrlを利用しスクロールバーのポインタを取得して、
そのポインタ経由で、スクロールバーの大きさを変更するといった
ことは、出来るかもしれません。
すべては、予想ですが。。。
丁寧な説明ありがとうございます。
仮想リストのメモリの節約というのは限られたメモリの組み込み機器にはかなり大きなメリットですね!!
早速調べて使ってみたいと思います。
リストのスクロールバーについては、もう少し調べてみます。
リストの標準のスクロールバーを表示させて、他に上下移動用のボタンを配置させ、そのボタンをタッチさせスクロールバーを移動させたり、キーボード操作でスクロールバーを移動させたりでもいいかなと思っていますので、その方法でも検討してみて分からなければ、もしかすればもう一度こちらに質問させて頂くかもしれません。
ご回答ありがとうございました!
No.1
- 回答日時:
結論は出来ます。
リストコントロールの場合は特別な処理はいりません。
リストコントロールのスクロールバーを有効にして、リストにデータをセットすれば、スクロールバーを動かすと勝手に描画領域は更新されます。
ただ、組み込み系ですので、メモリー等のことを考えると仮想リストとして実装する方が無難だと思います。
ちなみに、サムネイル表示も可能です。
ピクチャーコントロールでの実装経験が無いので、具体的な実装方法はわかりませんが、最悪ピクチャーコントロールを利用しなくても、スクロールバーとメモリデバイスコンテキストを使用して、移動量を取得して、自分で描画更新をかければ実装できると思います。
ご回答ありがとうございます。
仮想リストコントロールというのがあるのですね、初耳です。
ネットで調べてみると、仮想リストコントロールというのはリストへのデータの表示が早いみたいですね。
仮想リストを使用する場合に特に普通のリストと、プログラムを作成する点で違う箇所はありますでしょうか?
リストコントロールだと自動でスクロールバーを表示してくれるみたいなのですが、現在開発している機器がタッチパネル式のため、自動で表示されるスクロールバーではタッチするには小さいため、出来れば別で大きい垂直スクロールバーを設置して動かしたいと思っています。
そのようにする場合にはDlgにOnVScroll()のイベントを作成して、その関数内でリスト内の項目を移動させるように処理すればよいのでしょうか?
重ねての質問で申し訳ございませんが、ご回答を宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- gooブログ 記事の下にスクロールバーが表示される 2 2022/08/19 20:42
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- その他(IT・Webサービス) このサイトのスクロール逆じゃないですか? 1 2022/10/05 20:48
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- その他(趣味・アウトドア・車) アマチュア無線の「村」まで入った「市郡区番号リスト」を探しています 4 2022/08/27 07:07
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- 宇宙科学・天文学・天気 宇宙文明レベル 2 2022/08/08 15:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
EXCELVBA リストボックスで選択...
-
連続で印刷すると画像が更新さ...
-
フォームでPDFを表示させた...
-
エクセル - リストボックスのマ...
-
DateTimePickerでに年月までし...
-
スピンボタンを右クリックして...
-
CTreeCtrlのノードごとにアイコ...
-
コモンダイアログコントロール...
-
タブインデックスをより簡単に...
-
C#.NETでのCOMコンポーネント作...
-
C#でChartコントロールを...
-
ActiveXコントロールの...
-
リストボックスの同期
-
Accessのタブコントロールを2...
-
regsvr32でActiveX登録を行ったocx
-
WindowsMediaPlayer全画面表示...
-
VC++6.0について
-
WS_TABSTOPが機能するコントロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
DateTimePickerでに年月までし...
-
スピンボタンを右クリックして...
-
連続で印刷すると画像が更新さ...
-
フォームでPDFを表示させた...
-
ActiveXコントロールを.NETにイ...
-
エクセル - リストボックスのマ...
-
コモンダイアログコントロール...
-
TabControlとToolBarの背景色変更
-
EXCELVBA リストボックスで選択...
-
警告表示を非表示にしたい
-
CEdit の内容が変わった時にメ...
-
ワードのドロップダウンリスト
-
リストボックスの同期
-
文字色を変えたい(ACCESS VBA)
-
VScrollBarの点滅を何とかしたい。
-
C#でChartコントロールを...
-
Excel VBAでのMultipageの選択
-
VisualStudio MFC変数が追加で...
おすすめ情報