2009-12-21 84 views
3

以我C++的Win32 GUI應用程序我有從對話框模板創建的編輯控件對話框回車:的Win32多行編輯控件失去上SetWindowText函數()

EDITTEXT IDC_EDIT_Id, X, Y, W, H, 
    ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL 

任何時候和回車手動輸入多行文本並調用GetWindowText()檢索到的文本被分解爲CRLF個字符。但是,當我嘗試將相同的文本放回到SetWindowText()的編輯控件中時,控件將該文本顯示爲單個字符串。

它爲什麼表現出這樣的行爲,我該如何解決這個問題?

回答

5

當您將文本放回到SetWindowText時,請確保您的換行符使用了\ r \ n。

適合我。

這將顯示2行文字:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\r\nWorld!")); 

你好
世界!

這將顯示1行文字:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\nWorld!")); 

的HelloWorld!

+0

是的,就是這樣。現在我規範如下:首先用「」替換所有的「\ n」,然後用「\ r \ n」替換所有的「\ r」。非常感謝。 – sharptooth 2009-12-22 08:13:53