ListView_DeleteItem() をコールすると ListView_EnsureVisible() がうまく動作しません – プログラミング – Home

通知
すべてクリア

[解決済] ListView_DeleteItem() をコールすると ListView_EnsureVisible() がうまく動作しません


たま
 たま
(@たま)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

WinXP Home(SP3), VC++6.0 で開発しています。
MFC は使用しておりません。

リストビューコントロールを使って、あるシステムのログを表示させようとしています。
表示形式は「レポート」で、上から下に向かって1行ずつログを追加表示していく形なの
ですが
新しい行が追加されたらその行が表示される位置まで自動スクロールするようにしています。

そして、一定行数を超えたら最上行から削除していく仕様なのですが、この削除処理を入
れると
新規追加行への自動スクロールが機能しなくなって困っています。

以下がソースです。
ListView_DeleteItem() をコールすると、新規追加行への自動スクロールが機能しません。
ちなみに ListView_EnsureVisible() の後にコールするようにしてもダメでした。
原因および対策などがございましたらご教授頂けると助かります。

---------------------------------------------------------------------------
HWND hDlg; // 親ダイアログのハンドル
HWND hList; // リストビューのハンドル
LVITEM stItem; // アイテム構造体

// リストビューのハンドルを取得
hList = GetDlgItem(hDlg, IDC_LIST_LOG);

// 先頭行削除
ListView_DeleteItem(hList , 0);

// アイテム構造体にデータを格納
stItem.mask = LVIF_TEXT;
stItem.iItem = nRow; // 行番号
stItem.iSubItem = 0;
stItem.pszText = szMessage; // 追加文字列

// アイテム追加
ListView_InsertItem(hList , &stItem);

// 追加したアイテムの行に移動
ListView_EnsureVisible(hList, nRow, FALSE);
---------------------------------------------------------------------------

不足している情報があればおっしゃって下さい。
よろしくお願い致します。


引用未解決
トピックタグ
たま
 たま
(@たま)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

追加先の行番号である nRow の値を正しくすることで解決しました。
初歩的なミスで申し訳ありませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました