長くなると思うのですが、質問です。
ダイアログのエディットボックスから取った文字列を
リストに表示する処理を行っています。

・edit_dlgはCDialogの派生クラスのオブジェクトです。
・m_listCtrlはCListCtrlクラスの派生クラスのオブジェクトです。
・bufはchar型配列です

<<問題点>>
リストが正しく表示されません。
CListCtrl::InsertItemで設定した(LPCTSTR)edit_dlg.m_id_editは表示される。
CListCtrl::SetItemで設定した以下の文字列が表示されない。
既に設定してあるリストを編集する形でCListCtrl::SetItemTextを使った場合
更新はされる。
何か抜けているのがありましたらご指摘お願いします。

if( edit_dlg.DoModal() )
{
  LV_ITEMmyItem;
  myItem.mask = LVIF_TEXT;
  myItem.iItem = m_listCtrl.GetItemCount() + 1;
  myItem.iSubItem = 0;
  strcpy( buf, (LPCTSTR)edit_dlg.m_id_edit ); //m_id_editはCString型
  myItem.pszText = buf;
  int iItem = m_listCtrl.InsertItem(&myItem);

  myItem.iSubItem = 1;
  myItem.mask = LVIF_TEXT;
  ZeroMemory( buf, sizeof( buf ) );
  strcpy( buf, (LPCTSTR)edit_dlg.m_app_edit );m_app_editはCString型
  myItem.pszText = buf;
  m_listCtrl.SetItem(&myItem);

  myItem.iSubItem = 2;
  myItem.mask = LVIF_TEXT;
  ZeroMemory( buf, sizeof( buf ) );
  strcpy( buf, (LPCTSTR)edit_dlg.m_slocal_edit );m_slocal_editはCString型
  myItem.pszText = buf;
  m_listCtrl.SetItem(&myItem);

  myItem.iSubItem = 3;
  myItem.mask = LVIF_TEXT;
  ZeroMemory( buf, sizeof( buf ) );
  strcpy( buf, (LPCTSTR)edit_dlg.m_clocal_edit );
  myItem.pszText = buf;
  m_listCtrl.SetItem(&myItem);

  ///(途中省略・・・)///

  m_listCtrl.SetItem(&myItem);
  m_listCtrl.Update(iItem);
}