仮想リストコントロール SetItemCountExで落ちてしまいます。  – 固定ページ 2 – プログラミング – Home

仮想リストコントロール SetItem...
 
通知
すべてクリア

[解決済] 仮想リストコントロール SetItemCountExで落ちてしまいます。 

固定ページ 2 / 2

Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

なるほどそうでした、失礼しましたm(__)m


返信引用
大泉
 大泉
(@大泉)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

CListCtrlが実態が生成していない事を確認するには、
どうすればよいでしょうか?
このような感じで実態が無い場合は処理を回避したいです。
ちなみに、if(ListCtrl != NULL ){はコンバイルエラーになりました。

CListCtrl& ListCtrl = pXXXXXView->GetMyListCtrl();
if(ListCtrl != NULL ){ <<================================== エラー
// ここでリストの数を設定しているが、SetItemCountExで落ちる。
ListCtrl.SetItemCountEx( m_List.size(),
LVSICF_NOINVALIDATEALL | LVSICF_NOSCROLL );
ListCtrl.Invalidate();
}


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> ちなみに、if(ListCtrl != NULL ){はコンバイルエラーになりました。

ListCtrl は参照であってポインタではありませんので、NULL との比較はできません。
そもそも、参照は(余程ひねくれたことをしない限り)NULL になりません。

> CListView::GetListCtrl() は単に *(CListCtrl*)this を返すだけ

ですので、GetMyListCtrl が GetListCtrl と同じことをしているのだとすれば、
その戻り値が NULL になるケースでは this == NULL ということであり、
こういう事態は、絶対とはいえませんが、そうそうあるものではありません。

ただ、ListCtrl が何を指しているかは、GetMyListCtrl の実装によりますので、
それを示していただかないことには、進展は無いような気がします。

ところで

> ASSERT_KINDOF(CListCtrl, &ListCtrl);で落ちてました。

これはどこに書きました?


返信引用
大泉
 大泉
(@大泉)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

void CLeftView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();

// Treeを構築
SetTree();

CListCtrl& ListCtrl = pXXXXXView->GetMyListCtrl();
  ASSERT_KINDOF(CListView, pExplorerView);
  ASSERT_KINDOF(CListCtrl, &ListCtrl);<< --- エラー
  ASSERT(ListCtrl.GetStyle() & LVS_OWNERDATA);<< --- エラー

// エラー
ListCtrl.SetItemCountEx( m_List.size(), LVSICF_NOINVALIDATEALL |
LVSICF_NOSCROLL );
ListCtrl.Invalidate();
}


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

DisplayMode が確実に 0,1,2のいずれかになっていることが
確認されてないようですが、大丈夫でしょうか?

また、pXXXXXViewという変数に値をセットする部分は
どうなっていますか?


返信引用
大泉
 大泉
(@大泉)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

みなさんありがとうございました。
無事解決いたしました。
dairygoodsさんの助言の通り、DisplayModeに変な値が入っていて
0,1,2以外の数字になっていました。
私のミスです。
今回のカキコミでASSERT_KINDOFの使い方や、バグの解決の仕方など
色々勉強になりました。
またわからない事があれば、その時は御願いいたします。

>DisplayMode が確実に 0,1,2のいずれかになっていることが
>確認されてないようですが、大丈夫でしょうか?


返信引用
大泉
 大泉
(@大泉)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

解決


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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