在对话框中设置了一个edit control(ID为IDC_EDIT3),用来实时显示程序的运行情况:
控件关联的变量为CString Step_infoStep_info =Step_info+ _T("\r\n程序执行第一步!");
GetDlgItem(IDC_EDIT3)->SetWindowText(Step_info);每次完成一步都执行这两句,但是每次执行过之后都无法立即在edit control中显示出来,到下一次执行时才会把上一次的显示出来,或者直接啥都不显示!注:是在另外一个线程函数中执行的,无法使用 dlg->Updatedata()函数能否有解决方案或者其他更好的方法?
控件关联的变量为CString Step_infoStep_info =Step_info+ _T("\r\n程序执行第一步!");
GetDlgItem(IDC_EDIT3)->SetWindowText(Step_info);每次完成一步都执行这两句,但是每次执行过之后都无法立即在edit control中显示出来,到下一次执行时才会把上一次的显示出来,或者直接啥都不显示!注:是在另外一个线程函数中执行的,无法使用 dlg->Updatedata()函数能否有解决方案或者其他更好的方法?
你Google下MFC自定义消息就OK了另外我帮你测试下 发现如果使用ID发送消息不会出现你所说的情况
UINT WINAPI _Thread(LPVOID p)
{
static int n=0;
CKlDlg* dlg=(CKlDlg*)(p);
char sz[100]="";
while (1)
{
dlg->GetDlgItem(IDC_EDIT1)->SetWindowText(itoa(n++,sz,10));
Sleep(10);
}
return 0;
}
控件关联的变量为CString Step_infoStep_info =Step_info+ _T("\r\n程序执行第一步!");
GetDlgItem(IDC_EDIT3)->SetWindowText(Step_info);Step_info =Step_info+ _T("\r\n程序执行第一步!"); 不用这句 直接根据ID SetWindowText
你关联了一个EDIT控件CString变量 这样的话你就需要UpdateData让EDIT的数据换入或者换成到其CString
后面一句你使用ID来SetWindowText 由于你没有调用UpdateData将数据换到EDIT控件关联的CString 所以EDIT关联的CString是一个空值 所以看起来就没有显示
这和UpdateData没关系,他只要SetWindowText就应该显示出来。
改一下:
Step_info =Step_info+ _T("程序执行第一步!\r\n");
http://blog.csdn.net/qq752923276/archive/2011/04/22/6342871.aspx
我觉得没有显示应该是LZ的EDIT控件关联的CString变量为空 其实可以测试下 不用EDIT控件关联的变量 使用一个局部变量 如char sz[]="21321";
Step_info =Step_info+ _T("程序执行第一步!\r\n"); 呵呵 LZ就是这么做的哦