おはようございます。秀水といいます。
環境はWin98,VC++6.0,MFC です。
SetColumnを使用してリストビューのColoumnの文字列変更を変更しています。
LVCOLUMN lvcolumn;
CListCtrl& lst = GetListCtrl();
lst.GetColumn(id + 1, &lvcolumn);
lvcolumn.pszText = あいうえお;
lst.SetColumn(id + 1, &lvcolumn);
Debugでビルドするとリストビューの2列目のヘッダーがあいうえおに変更されます。
ところがReleaseでビルドするとリストビューのヘッダーが変更されません。(・_・?)
どこをチェックしていけばよいのか。
何を疑わなければならないのか検討がつきません。
助言いただけたらと思い発言させていただきました。
よろしくお願いいたします。
lvcolumn を使う前に適切に初期化する必要があります。
もう一度 MSDN で SetColumn や LVCOLUMN の説明を読み直してみてください。
文字列を設定するだけなら GetColumn する必要はないです。
MSDN の CListCtrl::SetColumn の説明からの引用
> 構造体の mask メンバは、どの列属性を設定するかを指定します。
> mask メンバに LVCF_TEXT 値を指定すると、構造体の pszText メンバは NULL で終わる文字列のアドレスを
> 持ち、構造体の cchTextMax メンバは無視します。
lvcolumnを初期化していないようだけど、それが原因では。
最低限maskメンバはきちんと初期化する必要があります。
DEBUGビルドで正常に動くのがたまたまだということだと
思います。
kazumaさんの発言とかぶってしまいました。
ごめんなさい。
maskで何を設定するか指定、その後値設定だったのですね。
秀水はおばかさんで、GetColumnで現状の設定をlvcolumnに取得。
文字列だけを変更したいので
lvcolumn.pszText = 文字列;
とやると勘違いしてました。(/o\)
lvcolumn.mask = LVCF_TEXT;
lvcolumn.pszText = あいうえお;
lst.SetColumn(1, &lvcolumn);
でReleaseビルドでも思うように動作しました。
kazumaさん、クラフトマンさん ありがとうございました。m(_ _)m