再びお世話になります。
開発環境は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もきちんと値は渡っています。
対処法をご教授いただければと思います…。
> 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の中身をエディットボックスにセットする操作です。
ご指摘の通り
UpdateData(FALSE);
を先に記述した所できました!
int end = pEdit->GetWindowTextLength();
の段階で「aaaaa」がエディットボックスにセットされてなかったから
できなかったんですね…
素早い返答ありがとうございました!