我有两个类一个是自定义的类CCal,另外一个是单文档类型的类CTI_CalibrationView,我在Cal.h头文件中定义了#define WM_CAL_MSG WM_USER+100,并且在Cal.cpp文件中定义了
void CCal::Display(char *msg)
{
SendMessage(m_hWnd,WM_CAL_MSG,(WPARAM)msg,0);
}
这个函数,而在TI_CalibrationView.cpp文件中定义了
void CTI_CalibrationView::OnGetMessage(WPARAM wParam, LPARAM lParam)
{
char *lpsz = (char*)wParam;
ShowInfo(lpsz);
}
void CTI_CalibrationView::ShowInfo(char *msg)
{
CHAR   szt[256];
  char *lpsz = msg ;
    //_stprintf(szt, _T("%s\n\t"), lpsz);
_stprintf(szt, _T("%s\x0D\x0A"), lpsz);
m_richedit.ReplaceSel(szt);
}其中,m_richedit是RICHEDIT函数的成员变量,
而其中在Cal.cpp中有这么一个函数,这里只取了一小部分,
bool CCal::Cal_Adc()
{
int adclow,adchigh;
int X1,X2;
int Y1,Y2;
int vbatcal_a,vbatcal_b;
m_aurt=1;
m_baudrate=115200;
strcpy(m_Information,"ADC_CAL Begin...");
Display(m_Information);
m_err=EnterMsTestMode(m_aurt,m_baudrate);
if(m_err==false)
{
strcpy(m_ErrInformation,"进入手机测试模式失败");
return false;
}
}
问题是当执行到
strcpy(m_Information,"ADC_CAL Begin...");
Display(m_Information);这些函数的时候我界面上的RICHEDIT控件不能实时显示内容,而是等程序完全执行完了以后,所有的内容一次全刷新出来了。我不知道什么原因,请大家帮忙。

解决方案 »

  1.   

    参考用SendMessage()函数传递字符串
    -----------------------------
    两个参数都带字符串的形式:void CAaaDlg::OnButton1() 
    {
        char* p1 = "Willis";
        char* p2 = "VCHelp";
        SendMessage(WM_CURRENTINFO, (WPARAM)p1, (LPARAM)p2 );
    }
    LRESULT CAaaDlg::OnCurrentInfo(WPARAM wParam, LPARAM lParam )
    {
        MessageBox((LPSTR)wParam,(LPSTR)lParam,0);//消息函数里接收字符串
        return 0;
    } 只带一个字符串的形式:
    CString strPara = _T("fggg");
    ::SendMessage(hWnd,WM_XXXX,0,(LPARAM)(LPCTSTR)strPara);OnMessageXXXX(WPARAM wParam,LPARAM lParam)
    {
        CString strddd = (LPCTSTR)lParam;  //在消息处理函数里接收字符串
    }
      

  2.   

    看你的意思是希望在执行m_err=EnterMsTestMode(m_aurt,m_baudrate);之前能够及时添加内容吧?那你需要在执行这个语句的时候稍微堵塞一下,简单一点设置一个全局变量等待内容被添加。我就遇到用消息通知经常不能在恰当的时间得到处理。