在不知道您尝试使用 SetWindowText 和 EM_STREAMIN 添加到控件的文本格式的情况下,我会猜测并说这可能与控件的文本模式有关。设置控件的内容后,尝试向其发送EM_GETTEXTMODE消息并查看是否设置了 TM_PLAINTEXT 位。如果是这种情况,请尝试发送EM_SETTEXTMODE消息,然后发送 EM_AUTOURLDETECT。您的代码应如下所示:
UINT textmode = (UINT)::SendMessage(handle_to_control, EM_GETTEXTMODE, 0, 0);
if(textmode & TM_PLAINTEXT) {
textmode &= ~TM_PLAINTEXT; // Clear the TM_PLAINTEXT bit
textmode |= TM_RICHTEXT; // Set the TM_RICHTEXT bit
if(::SendMessage(handle_to_control, EM_SETTEXTMODE, textmode, 0) != 0) {
// Failed to set the text mode
}
}
::SendMessage(handle_to_control, EM_AUTOURLDETECT, TRUE, 0);