掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストコントロールの列数変更によるエラー? (ID:71085)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> iWidth[2]なのは参考元のままだったからです。 > 確かに[3]や[4]の方が良いですね… iWidthがどういう目的の変数かを考えれば、要素数をいくつにすべきかは 自明だと思うが。ソースをコピペしてその時動いたとしても内容を理解し ないといつまでもこういう状況が続くよ。 > しかし、[2]に戻しても動きます。 iWidth[2]の次の領域がたまたま使用されていなかったか、正しい値になって いなくてもエラーとなって表に出てこなかったため。 あくまでたまたま動いているだけで、これはバグです。 こういうバグは別の場所に影響が出てくるので、デバッグが厄介です。 配列のサイズには気をつけましょう。 > case0以後は、iWidth[i] =…の文だけが少し変わります。 > case1 > iWidth[i] = m_list_result.GetStringWidth(lpTitel[i]) * 3; > case2 > iWidth[i] = m_list_result.GetStringWidth(lpTitel[i]) * 2; > case3 > iWidth[i] = m_list_result.GetStringWidth(lpTitel[i]) * 3; コピペに慣れてしまっているからこういうコードを書いちゃうんだろうね。 for ( int i = 0 ; i < 3 ; i++ ){ int width = 3; switch (i) { case 2: width = 2; break; // 以下係数が3以外のところだけcase文を書く } iWidth[i] = m_list_result.GetStringWidth(lpTitel[i]) * width; m_list_result.InsertColumn(i, lpTitel[i], LVCFMT_LEFT, iWidth[i], -1 ); } 同じコードはなるべく書かないようにしないと。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.