不知道您試圖添加到控件與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);
不幸的是,這並沒有工作:(這也是MSDN關於EM_SETTEXTMODE所說的:「如果控件包含任何文本,則消息失敗。」 – 2009-01-26 05:07:06
@Alex所以代碼片段獲取if(:: SendMessage(handle_to_control, EM_SETTEXTMODE,textmode,0)!= 0),然後失敗? – 2009-01-26 17:37:23
首先它沒有得到EM_SETTEXTMODE,因爲textmode已經是TM_RICHTEXT。然後手動將控件置於TM_PLAINTEXT模式,EM_SETTEXTMODE仍然失敗。嘗試清除文本然後設置它 - 沒有任何幫助:SETTEXTMODE成功,但沒有檢測到鏈接(( – 2009-01-27 17:45:47