
MFCのダイアログアプリを作成しています。
レポートスタイルのリストコントロールを配置して、全部で1000行のアイテム
を表示させたいのですが、いきなり1000行は多すぎるので最初に始めの100行分
だけ表示して、ユーザーがスクロールバーを一番下まで移動させるたびに
次の100行を追加挿入していって表示させるようにしたいと思っています。
そこでまずはユーザーがスクロールバーを一番下まで移動させたタイミングを
イベントで拾おうと思ったのですが、それっぽいLVN_BEGINSCROLL、
LVN_ENDSCROLLなどのイベントハンドラを作成してスクロールバーを
動かしてもうまく呼ばれません。どうすればいいかご教示ください
No.1ベストアンサー
- 回答日時:
>それっぽいLVN_BEGINSCROLL、LVN_ENDSCROLLなどのイベントハンドラを
http://msdn.microsoft.com/en-us/library/bb774802 …
ビジュアルスタイルを有効にしていたり、マニュフェストファイルの設定が必要だったりする…んですかね?
CListCtrlを継承したクラスを作成して、そのクラスのメッセージハンドラにWM_VSCROLLを追加…というのでどうでしょう?
# コントロール変数は作成したクラスの変数…ということになります。
スクロールバーを操作したときにOnVScroll()がコールされます。
スクロールバーのどの位置にあるのか…というのは入ってきませんので…
GetScrollInfo()辺りで情報を取得…でしょうか。
SB_ENDSCROLLの時…ですかね…。スクロールバーのボタン押されたままだとどうなるか微妙?
クライアントのサイズなどを取得して(CListCtrlのクライアントの左下辺りの座標で)CListCtrl::HitTest()で確認…というのは邪道ですかねぇ。
取得したアイテムのインデックスが最終インデックスまたは-1の時に最下段までスクロールした…とか。
# ちなみに、使用しているVSのバージョン、またはMFCのバージョンも明記した方が良い…かと思われます。
# 上記(OnVScroll())のはVS2005にて確認…です。
>いきなり1000行は多すぎるので
スレッドを作成して、そっちでアイテムを追加していく…というのもアリでしょう。
同期処理はちょっと手間かも知れませんが。
# ファイルが沢山あるディレクトリをエクスプローラで開いたときに、適度に追加されていく…ということがあります。
言われたとおり、CListCtrlの派生クラスを作ってそのイベントハンドラで
VSCROOLイベントを拾うことができました。
また、そこでGetScrollPos()とGetScrollLimit()を使って、
スクロールバーの最下位置を検出することができました。
無事解決しました。迅速な回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
リストビューのスクロールバーを非表示にしたい
C言語・C++・C#
-
エディットボックスの入力制限について
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
エディットボックスのフォントを変えたい
C言語・C++・C#
-
5
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
6
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
7
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
8
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
9
リストコントロールの列幅を固定にする
C言語・C++・C#
-
10
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
-
11
エディットコントロールのイベントハンドラ
Microsoft ASP
-
12
テキストボックスからフォーカス外す
C言語・C++・C#
-
13
CStringについて
C言語・C++・C#
-
14
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
15
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
16
MFC ダイアログ上のID取得について
C言語・C++・C#
-
17
VC++ MFC CListCtrlで、ボタンのあるリストの作り方
C言語・C++・C#
-
18
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
19
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
20
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSが全く分かりません、お助け...
-
Windows Formアプリからコンソ...
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
バッチファイルで以下のような...
-
どちのほうがすきですか?
-
c言語
-
MACで動く実行ファイルをWindow...
-
どなたかこのプログラミングを...
-
終端記号、非終端記号とは
-
【C言語】全角文字の配列を、全...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
プログラミング言語でアプリや...
-
次の記述について
-
C#でTreeViewのCheckBoxのサイ...
-
次の日本語の意味を教えて下さい
-
右ビットシフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
MFCアプリのコマンドラインでパ...
-
ボタンのオーナードローについて
-
MFCのドラッグ&ドロップについて
-
このコンパイルエラーの意味に...
-
オーバーライド関数の呼び出し...
-
C++ protectedにアクセス不可
-
【ASP.NET】 独自で作成したク...
-
個々の関数について継承してい...
-
MFCのCListCtrlでスクロールを検出
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
[MFC] CWnd::MessageBoxの警告...
-
CMainFrameクラスの使い方
-
関数の呼び出し元の検索
おすすめ情報