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で質問しましょう!
似たような質問が見つかりました
- gooブログ 記事の下にスクロールバーが表示される 2 2022/08/19 20:42
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- その他(IT・Webサービス) このサイトのスクロール逆じゃないですか? 1 2022/10/05 20:48
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
リストビューのスクロールバーを非表示にしたい
C言語・C++・C#
-
CListCtrlで行の高さを指定したい。
C言語・C++・C#
-
-
4
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
5
リストコントロールの列幅を固定にする
C言語・C++・C#
-
6
CString から LPCTSTRの型に変換
C言語・C++・C#
-
7
CStringをwchar_tに変換したい
C言語・C++・C#
-
8
CWnd::EnableWindow()の扱い方
C言語・C++・C#
-
9
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
10
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
11
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
12
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
13
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
14
リストビューの選択状態を取得するメッセージはありますか?
C言語・C++・C#
-
15
リストビューで選択行の背景を変える
C言語・C++・C#
-
16
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
17
コンボボックスの高さを変更したい。
C言語・C++・C#
-
18
CListCtrl の特定のセル(アイテム?)の文字だけ中央で表示したい
C言語・C++・C#
-
19
【MFC】CFileでSeekした位置から値出力したい
C言語・C++・C#
-
20
【C++/CLI.NET】コンボボックスの値の設定・取得
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCのCListCtrlでスクロールを検出
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
C++ protectedにアクセス不可
-
このコンパイルエラーの意味に...
-
デスクトップへコピー時に処理...
-
既定のコンストラクタがない?
-
Delphi2007のCheckBox.Font.Col...
-
ダイアログクラスのコントロー...
-
VC++ 7.1 で メインウィンドウ...
-
クラスのアドレスを引数として...
-
MFC CSplitter内にコントロール...
-
エディットコントロールのイベ...
-
MFCのドラッグ&ドロップについて
-
イベントにAddHandlerされてい...
-
オブジェクト指向 集約の実装...
-
MFCアプリのコマンドラインでパ...
-
【C++】vectorについて
-
[MFC] CWnd::MessageBoxの警告...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
C++ protectedにアクセス不可
-
ダイアログ表示時にチェックボ...
-
エディットコントロールでEnter...
-
【ASP.NET】 独自で作成したク...
-
このコンパイルエラーの意味に...
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
C++で継承元のクラスの代入演算...
-
MFCのCListCtrlでスクロールを検出
-
イベントにAddHandlerされてい...
-
MFCのドラッグ&ドロップについて
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
[MFC] CWnd::MessageBoxの警告...
-
個々の関数について継承してい...
-
クラスのアドレスを引数として...
-
関数の呼び出し元の検索
おすすめ情報