【显示cstring到edit的小问题】



发送邮件运行时 信息在右边 不是一条一条显示

而是 发送时 什么也不显示 然后等完了  

一下子全部显示出来 代码如下

C/C++ code
void CAPIMailDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    int i;
    CString tmp;
    UpdateData(true);
    m_message = "开始发送邮件!\r\n\r\n";
    //UpdateData(false);
    GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
    //::MessageBox(NULL,"开始发送邮件!","提示", MB_OK);
    for (i=0;i<atoi(m_cishu);i++)
    {
        tmp.Format("%d",i+1);
        m_message +="正在发送第" + tmp + "封邮件。\r\n";
        //UpdateData(false);
        GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
        SendMail();
        m_message +="" + tmp + "封邮件发送完毕。\r\n\r\n";
        //UpdateData(false);
        GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
    }
    m_message += m_cishu + "封邮件发送完毕!\r\n\r\n";
    //UpdateData(false);
    GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
    AfxMessageBox("发送完毕!");
    }



不管是用 UpdateData(false);
  还是 
GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
  都是这样

作者: bluestar2009   发布时间: 2011-06-14

你试试 UPDATEDATA(TRUE)
不过会闪烁

作者: piont_s21   发布时间: 2011-06-14

GetDlgItem(IDC_EDITSHOW)->SetWindowText(m_message);
这个在循环外,当然一下子全出来,加到里面就好了

作者: hustlaofan   发布时间: 2011-06-14

把发送部分代码放到新线程里去处理,不然阻塞了主线程处理

作者: johnroot   发布时间: 2011-06-14

UpdateData(false);或者是true是逻辑问题,不管闪烁问题。

你的代码没有闪烁问题。如果真的闪了,也无所谓的。

可以用SetRedraw(FALSE)一类的方法处理这种所谓的闪烁。

作者: healer_kx   发布时间: 2011-06-14

是UpdateWindow()

没细看 害人啊

作者: piont_s21   发布时间: 2011-06-14

setwindowtext 也是发送消息
你设置完 UpdateWindow() 更新一下  
免得下一次的数据把这一次的冲掉
可以试试

作者: piont_s21   发布时间: 2011-06-14