リストコントロール – プログラミング – Home

通知
すべてクリア

[解決済] リストコントロール


初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

XP VS2005で開発しています。

リストコントロールにアイテム(+サブアイテム1個)を追加したいのですが、
3行追加で描画更新 というのを繰り返しやっていると
おかしくなります。毎回ではないですが、結構頻度があります。

○   今の表示
1     1
2 2
3 3
----  ------
4 4
5 → 7
6 8
---- ------
7 5
8 6
9 9

という順番になっていまいます。
インデックスの指定などは順番通りに指定しているんですが、
なにが問題なのでしょうか?


引用未解決
トピックタグ
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

追加ですが、
InsertItem() の戻り値が新しいアイテムのインデックスでなくて、
既に使用されている古いインデックス番号を返していました。
-1を返していないのでGetLastError()でみても エラーは取れません。

どこに問題があるのでしょうか?


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

こういう内容の場合、
ソースコードを載せた方がよろしいかと思います。


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

このようになっています。
ダイアログベースなのですが、while分を抜けると描画更新されます。
ループは1回のときもあれば3回のときもあります。

LVITEM lvi;
int iListPosition = m_cListControl.GetItemCount();

while(条件){
lvi.mask = LVIF_TEXT;
lvi.iItem = iListPosition;
lvi.iSubItem = 0;
lvi.pszText = aaa;

m_cListControl.InsertItem(&lvi);

lvi.iSubItem = 1;
//lvi.iItem = iListPosition;
lvi.pszText = bbbb;

m_cListControl.SetItem(&lvi);

iListPosition = m_cListControl.GetItemCount();
}


返信引用
芋
 芋
(@芋)
ゲスト
結合: 16年前
投稿: 6
 

while() {
 :
 (中略)
 :
iListPosition = m_cListControl.GetItemCount();
UpdateWindow(); // 追加…かなぁ。。
}


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

UpdateWindow()でも同じでした。
ちなみにGetItemCount()は正しい位置を返します。
InsertItemをするとその場所に挿入できていません。


返信引用
芋
 芋
(@芋)
ゲスト
結合: 16年前
投稿: 6
 

lvi.cchTextMaxの値は?
lviの他メンバ値は初期設定せずに不定値のまま?


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

毎回 ::ZeroMemory(&lvi,sizeof(lvi));
で初期化してみました。
が、やはりダメでした。。。


返信引用
くり
 くり
(@くり)
ゲスト
結合: 23年前
投稿: 12
 

VS2005だと考えにくいですけどこんなのとか

リストコントロールの表示がずれる障害
http://support.microsoft.com/kb/407206/ja?spid=3003&sid=325

COMCTL32.DLL のバージョンはいくつになっていますか?


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

実際のリストコントロールには、
「1, 2, 3, ...」
という文字列が入っているわけではなさそうですね。
となると、プロパティの[Sort]が[なし]になっているか確認してください。


返信引用
芋
 芋
(@芋)
ゲスト
結合: 16年前
投稿: 6
 

お役に立て無さそうです…済みません。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

私もbunさんの指摘に一票。

ソートが設定されているとInsertした順番には表示できないですね。


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
Topic starter  

皆様 ほんとにありがとうございました。

ソートが設定されてました。

なしに設定して問題なく動作しました。 m__m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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