
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
大きい表へのスクロールバーの...
-
エクセルVBAでフォームのListbo...
-
リストビューをスクロールさせ...
-
スクロールバーの動作で困って...
-
TikTokLiteの自動スクロールの...
-
Visual Basicから Spreadのスク...
-
ページ読み込み時に自動でスク...
-
アコーディオンで開かれたパネ...
-
IEにおけるプルダウン、テキ...
-
上下キーを押すと、ページスク...
-
vb,netでtextboxの文字を右から...
-
写真を右から左にスクロールさ...
-
リストボックスをクリックした...
-
PDFを(htmlのように)無限に縦...
-
マウスホイールでスクロールで...
-
jscrollpaneで1番上を表示する
-
デジタル時計の時刻合わせの方...
-
Javascript_submit()完了後に処...
-
エクセルのシート上に別のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでワードアートや図を常に...
-
PDFを(htmlのように)無限に縦...
-
リストビューをスクロールさせ...
-
エクセルVBAでフォームのListbo...
-
TikTokLiteの自動スクロールの...
-
マウスオーバー→ホイール回転で...
-
vb,netでtextboxの文字を右から...
-
大きい表へのスクロールバーの...
-
アコーディオンで開かれたパネ...
-
Visual Basicから Spreadのスク...
-
webページで横方向にアンカーを...
-
ページ読み込み時に自動でスク...
-
ページ訪問時にiframe内を自動...
-
文章の自動スクロール
-
リストボックスをクリックした...
-
グループボックス内のコンボボ...
-
JTableの行ヘッダーを非表示に...
-
ジャバスクリプトを教えて下さい
-
スクロールボタンを押してもス...
-
このサイトのスクロール逆じゃ...
おすすめ情報