エディットボックスへの追記

解決


なちゅら  2009-11-10 17:25:08  No: 71078  IP: [192.*.*.*]

再びお世話になります。
開発環境はVC++6.0(SP6適用)、MFC(ダイアログベース)です。

エディットボックスに随時追記していきたいのですが、
検索してみつけた方法でやってみてもうまくいきません…
参考にしたのはこちらの質問です。
(参考というかほぼそのままですが)http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200604/06040059.txt

現在のソースは
CMainDlg::List(NMHDR* pNMHDR, LRESULT* pResult){
   CEdit* pEdit = ( CEdit* )GetDlgItem( IDC_EDIT1 );
   m_edit1 = "aaaaa\r\n";
   AddEdit(pEdit,"iiiiiiii\r\n");
   UpdateData(FALSE);
}

void CMainDlg::AddEdit(CEdit* pEdit, CString add)
{
   int end = pEdit->GetWindowTextLength();
   pEdit->SetSel( end, end );  
   pEdit->ReplaceSel( add );
}

としています。
IDC_EDIT1はエディットボックスのID、m_edit1は同エディットボックスの
CStringタイプのメンバ変数です。
リストビュー(レポート)がクリックされるとエディットボックスに
文字を表示させます。

これで実行すると
aaaaa
(空行)
と出ます。

aaaaa
iiiiiiii
(空行)
と表示させたいです。

以前、一度はきちんと追記されたのですが、
変更を加えると追記されなくなってしまいました。
(リストボックスをクリックした時に文字を表示させるようにしたのと、
AddEditへ渡す変数を変更したくらいです。)

リビルドをしても変わらず、
表示タイミングを元に戻しても変わらず、です。
AddEditにはpEditもaddもきちんと値は渡っています。

対処法をご教授いただければと思います…。

編集 削除
QR  2009-11-10 17:38:26  No: 71079  IP: [192.*.*.*]

> m_edit1 = "aaaaa\r\n";
> AddEdit(pEdit,"iiiiiiii\r\n");
> UpdateData(FALSE);



m_edit1 = "aaaaa\r\n";
UpdateData(FALSE);
AddEdit(pEdit,"iiiiiiii\r\n");

UpdateData(FALSE)はm_edit1の中身をエディットボックスにセットする操作です。

編集 削除
なちゅら  2009-11-10 17:45:15  No: 71080  IP: [192.*.*.*]

ご指摘の通り
UpdateData(FALSE);
を先に記述した所できました!

int end = pEdit->GetWindowTextLength();
の段階で「aaaaa」がエディットボックスにセットされてなかったから
できなかったんですね…

素早い返答ありがとうございました!

編集 削除