
No.1ベストアンサー
- 回答日時:
Win32SDKでやるなら ・・・
LVM_GETTOPINDEX, LVM_GETCOUNTPERPAGE, LVM_GETITEMRECT, LVM_GETITEMCOUNT, LVM_SCROLL
を使えば出来そうです
ListViewのハンドルがhLVだとすると
// 先頭の取得
int nTop = SendMessage( hLV, LVM_GETTOPINDEX, 0, 0 );
// 表示可能なアイテム数
int nPage = SendMessage( hLV, LVM_GETCOUNTPERPAGE, 0, 0 );
// ListViewの設定アイテム数
int nItems = SendMessage( hLV, LVM_GETITEMCOUNT, 0, 0 );
RECT rc;
// アイテムの矩形領域
SendMessage( hLV, LVM_GETITEMRECT, 0, (LPARAM)&rc );
int h = rc.bottom - rc.top;
for ( int n = 0; n < nPage; n++ ) {
// ListViewの下方へのスクロール
SendMessage( hLV, LVM_SCROLL, 0, (LPARAM)h );
// 上方へスクロールは -h を与えます
}
といった具合です
♯ スクロールが必要なのかの判断部分はコーディングしてください
回答、ありがとうございます。
早速、一つずつ確認しました。
が、「アイテムの矩形領域」で、rc.topとrc.bottomの値が「-858993460」となっており、hが0でスクロールが確認出来ません。
LVM_GETITEMRECTで検索を掛けてみましたが、ヒントすら掴む事が出来ませんでした。
申し訳ありませんが、再度、助言をお願いします。
No.3
- 回答日時:
プログラミングスタイルも明記した方がいいですね
MFCとかWin32SDKとか
MFCならばコントロールのメンバー関数で出来る場合がありますので
CRect rc;
CListCtrl& lst = m_ListView.GetListCtrl();
lst.GetItemRect( 0, rc, LVIR_LABEL );
といった具合で ・・・
回答、ありがとうございます。お礼が遅くなりました。
>プログラミングスタイルも明記した方がいいですね
>MFCとかWin32SDKとか
次回から明記するようにします。
ありがとうございました。
No.2
- 回答日時:
アイテムの矩形の取得方法が間違ってますね ・・・
rc.left = LVIR_LABEL;
SendMessage( hLV, LVM_GETITEMRECT, (LPARAM)rc);
といった具合です
ラベルの大きさならLVIR_LABEL
アイコンの大きさなら LVIR_ICON
選択サイズなら LVIR_SELECTBOUNDS
をrc.leftに設定して呼び出しましょう
# MSDNなどで確認する癖をつけましょう
この回答への補足
taka077です。
すみません!お礼に記載した内容に間違いがありました!
>但し、ヘッダを含む?サイズのようなので、
>h = h / (nPage + 1);
>で1行の高さを求め、for()で1行分ずつスクロールするようにしました。
int h = rc.bottom - rc.top; で、ちゃんと1行分の高さが取得出来ていました。
いつもありがとうございます。
無事、
RECT rc;
rc.left = LVIR_LABEL;
::SendMessage( m_ListView.m_hWnd, LVM_GETITEMRECT, 0, (LPARAM)&rc );
m_ListView.GetClientRect(&rc);
int h = rc.bottom - rc.top;
でビューの縦サイズを取得出来ました。
但し、ヘッダを含む?サイズのようなので、
h = h / (nPage + 1);
で1行の高さを求め、for()で1行分ずつスクロールするようにしました。
色々調べていたら、以下の方法でもいいのかなというのが見付かりました。
CRect rect;
m_ListView.GetClientRect(&rect);
int h = rect.Height() / (nPage + 1);
>MSDNなどで確認する癖をつけましょう
了解です!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- Facebook 他人のおすすめ記事 1 2022/04/03 05:20
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Chrome(クローム) google earth PROをクリックすると下記の表示がされPROが開きません 2 2022/07/28 10:25
- HTML・CSS リストの並べ替え 1 2022/09/13 15:27
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- その他(パソコン・スマホ・電化製品) JIS規格の変更履歴 2 2023/04/03 10:38
- gooメール Gメールログインの件 2 2022/07/08 23:44
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの移動しない列
-
マウスオーバー→ホイール回転で...
-
数枚のバナーが入れ替わるライ...
-
VC++ ダイアログについて
-
PDFを(htmlのように)無限に縦...
-
VB2005 .NETでAccessのイベント...
-
divのoverflowのスクロールバー...
-
電子工作が詳しい方教えてくだ...
-
スクロールバーの位置指定
-
Excelでワードアートや図を常に...
-
画像の無限スクロールについて
-
横にスムーズスクロールしたい
-
コントロールの基本について
-
フレームを使用する際に
-
jqueryの画像ギャラリープラグ...
-
JQueryで画面中央にDIVを配置し...
-
Googleでワード検索したときに...
-
常に画像の大きさを横幅100%で...
-
モバイルパソコンの購入に際し...
-
HP作り。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
PDFを(htmlのように)無限に縦...
-
エクセルVBAでフォームのListbo...
-
リストビューをスクロールさせ...
-
アコーディオンで開かれたパネ...
-
Visual Basicから Spreadのスク...
-
大きい表へのスクロールバーの...
-
マウスオーバー→ホイール回転で...
-
vb,netでtextboxの文字を右から...
-
ExcelVBAで他のアプリをスクロ...
-
新着情報などをスクロールしな...
-
マウスでコロコロしたいんですが…
-
リストビューのスクロールバー...
-
Excelで一部分だけを常に表示さ...
-
エクセルで行を固定しその下か...
-
マウスホイールでスクロールで...
-
文章の自動スクロール
-
html js 横軸の長いチャート
-
上下キーを押すと、ページスク...
-
C#:ListViewでのスクロールイベ...
おすすめ情報