运用SetDlgItemText文字无法立即显示
使用SetDlgItemText文字无法立即显示
下面是相关代码:
//SetDlgItemText函数调用后没有立即显示文字,我想是否此因为此函数内部发送一个WM_PAINT消息放在消息队列中,然后执行到connect函数发送了一个优先级更高的消息,导致WM_PAINT消息延后执行,所以才没立即显示呢?若是,该如何处理呢,若不是,又是什么情况呢?请教
SetDlgItemText(IDC_TEXT, _T("正在连接服务器...\r\n"));
if (::connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)) != SOCKET_ERROR)
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str += _T("连接服务器成功!\r\n");
GetDlgItem(IDC_TEXT)->SetWindowText(str);
GetDlgItem(IDC_SENDTEXT)->EnableWindow(true);
GetDlgItem(IDC_ADDR)->EnableWindow(false);
GetDlgItem(IDC_PORT)->EnableWindow(false);
}
else
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str += "连接服务器失败!请重试\r\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
}
------解决方案--------------------
你应该清空前面的文本,
str不要“+=”改成“=”
------解决方案--------------------
UpdateWindow()
下面是相关代码:
//SetDlgItemText函数调用后没有立即显示文字,我想是否此因为此函数内部发送一个WM_PAINT消息放在消息队列中,然后执行到connect函数发送了一个优先级更高的消息,导致WM_PAINT消息延后执行,所以才没立即显示呢?若是,该如何处理呢,若不是,又是什么情况呢?请教
SetDlgItemText(IDC_TEXT, _T("正在连接服务器...\r\n"));
if (::connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)) != SOCKET_ERROR)
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str += _T("连接服务器成功!\r\n");
GetDlgItem(IDC_TEXT)->SetWindowText(str);
GetDlgItem(IDC_SENDTEXT)->EnableWindow(true);
GetDlgItem(IDC_ADDR)->EnableWindow(false);
GetDlgItem(IDC_PORT)->EnableWindow(false);
}
else
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str += "连接服务器失败!请重试\r\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
}
------解决方案--------------------
你应该清空前面的文本,
str不要“+=”改成“=”
------解决方案--------------------
UpdateWindow()