给文本框重新赋值后,怎么样使它立即更新?
我的程序中,执行一个动作后,就要显示执行的结果,可是现在的程序却不能随时更新,只是在所有动作都完成后,才一次更新了文本框,程序如下:
if( !comTransfer.CommOpen() )
{
m_strReceive.Append( "Open com port failed.\r\n" );
UpdateData( FALSE );//注:此处不起作用
return;
}
GetDlgItem(IDC_BTConnect)->SetWindowText("DisConnect");
m_strReceive.Append( "Open com port successfully!\r\n" );
UpdateData( FALSE );
//此时并没有显示第一步的消息
if( !comTransfer.BitRateAdjustment() )
{
m_strReceive.Append( "Bit rate adjustment failed.\r\n" );
UpdateData( FALSE );
return;
}
m_strReceive.Append( "Bit rate adjustment successfully!\r\n" );
UpdateData( FALSE );
问题点数:50、回复次数:11Top
1 楼blue2moon(蓝狐)回复于 2006-03-03 13:47:23 得分 0
忘了加一句,m_strReceive已经和文本框建立关联:
void CSHFlashTransferDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDITReceive, m_strReceive);
}Top
2 楼Bill4661(迷途)回复于 2006-03-03 14:43:59 得分 0
多线程试试Top
3 楼blue2moon(蓝狐)回复于 2006-03-03 14:49:56 得分 0
不会吧,这个问题需要多线程来解决?Top
4 楼smallquick(小生)回复于 2006-03-03 15:09:40 得分 0
在m_strReceive.Append( "Open com port failed.\r\n" );
前加一句updateData(true)Top
5 楼blue2moon(蓝狐)回复于 2006-03-03 16:30:54 得分 0
smallquick(小快):
呵呵,这是你想的吧,可惜不行啊Top
6 楼Snow_Ice11111(雪上加冰)回复于 2006-03-03 20:48:13 得分 0
是不是它已经更新了内容,只是后面的更新内容马上又来了,如此你只看到了最后一次更新的东西。Top
7 楼blue2moon(蓝狐)回复于 2006-03-06 09:04:24 得分 0
To: Snow_Ice11111(雪上加冰)
应该不是吧,我是以追加方式向文本框写字符串的:
m_strReceive.Append( "Open com port failed.\r\n" );
我想,每次追加内容之后,调用Updatedata(FALSE),应该可以更新文本框显示的,为什么不行呢?Top
8 楼aat_ydt()回复于 2006-03-06 10:07:03 得分 0
updatadata(True);Top
9 楼dnliophsam()回复于 2006-03-06 10:30:22 得分 0
aat_ydt() UpdateData(TRUE)是从文本框读取
楼主你的文本框有没有支持多行文本的?把m_strReceive.Append( "Open com port failed.\r\n" );中的\r\n去调再试一下?
Top
10 楼Mackz(在相互)回复于 2006-03-06 11:51:36 得分 0
消息阻塞。你的这个函数得不到执行的机会。Top
11 楼blue2moon(蓝狐)回复于 2006-03-06 13:24:01 得分 0
To: Mackz(在相互)
您的回答真是一针见血,谢谢。
可是,能否给出更详细的解释。
或者给出参考,遇到此类问题该怎么解决。Top




