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);
---------------------------------------------------------------------------
不足している情報があればおっしゃって下さい。
よろしくお願い致します。
追加先の行番号である nRow の値を正しくすることで解決しました。
初歩的なミスで申し訳ありませんでした。