エディットボックス内表示

[戻る]
hana 2008/09/15(月) 17:35:46
いつも参考にさせていただいています。
今回、上手くいかないことがあったので質問させていただきます。

現在、フォルダを読みこんでその中にあるテキストファイルをエディットボックスに
表示することをしようとしています。
そのフォルダにはテキストファイルが2つあって(テキストA、テキストB)、各々の
テキストファイル表示用にボタンが2つあって(ボタン1、ボタン2)、ボタンを押下
することで切り替えるようにしようとしています。

ボタン1を押下して、テキストAをエディットボックスに表示することは出来たのです
が、テキストBを表示させようとボタン2を押下するとテキストAの続きからテキスト
Bが表示されてしまいます。

そこで、テキストAとテキストBを表示する為に使用しているバッファが同一だったの
が表示できない理由かと思い、バッファを分けてみましたが上手くいきませんでした。

ソースを記載しますのでどこがいけないのか示していただけると有り難いです。

ifstream text_A,text_B;
char buf_file1[300]buf_file2[300];

void CFastCamMonitorDlg::ReadtextA()
{
    while(text_A.getline(buf_file1,1000)){
        m_result = m_result + buf_file1 + "\r\n";
    }
    text_A.close();
    UpdateData(FALSE);
}
void CFastCamMonitorDlg::ReadtextB()
{
    while(text_B.getline(buf_file2,1000)){
            m_result = m_result + buf_file2 + "\r\n";
    }
    text_B.close();
    UpdateData(FALSE);
}

void CTestDlg::OnBnClickedButton1()
{

hFind = FindFirstFile(PivResultFile, &FileData);
if(hFind != INVALID_HANDLE_VALUE){
        m_edit_result.SetWindowText("");
        text_A.open(ResultFileA);
                    
        ReadtextA();
}

void CTestDlg::OnBnClickedButton2()
{
  hFind = FindFirstFile(AggResultFile, &FileData);
if(hFind != INVALID_HANDLE_VALUE){
        m_edit_result.SetWindowText("");
        text_B.open(ResultFileB);

        ReadtextB();
}
ちなみにエディットボックスは
DDX_Control(pDX, IDC_EDIT_RESULT,m_edit_result);
DDX_Text(pDX,IDC_EDIT_RESULT,m_result);

CString m_result;
CEdit m_edit_result;
で定義しています。

環境はVC++2005 MFC WinXPです。
よろしくお願いいたします。

wclrp ( 'o') 2008/09/15(月) 20:21:23
文字列の追加しかしてないから
ボタン押すたびに追加しかしないんじゃないかな。

void CFastCamMonitorDlg::ReadtextA()
{
 m_result = "";
〜以下省略〜

void CFastCamMonitorDlg::ReadtextB()
{
 m_result = "";
〜以下省略〜


雑記
 m_result = m_result + って効率悪そうな気が

hana 2008/09/16(火) 13:14:00
[[解決]]
wclrp ( 'o')さん
返信有難うございます。

>m_result = "";
でできるようになりました。

m_edit_result.SetWindowText("");
でクリアされていると思い込んでいましたが、
m_resultの方は前までのデータが残っていたんですね・・・

ご指導有難うございました。

古いスレッドには追加発言できません。