2012-01-28 25 views
2

我已經在C中創建了一個簡單的表單,並在其中添加了一些控件。但是使用編輯控件,我不能將文本附加到它,如列表框控件。我所能做的就是從編輯控件中獲取文本,向其添加所需的行,然後再次設置文本。這是我寫這個工作的代碼。將文本附加到編輯控件? (Windows API)

void AddText(HWND EditControl, char *NewData) 
{ 
    int TextLen = GetWindowTextLength(EditControl); 
    char *Result = malloc(TextLen + strlen(NewData) + 1); 
    if (Result == NULL) return; 
    GetWindowText(EditControl, Result, TextLen + 1); 
    memcpy(&Result[TextLen], NewData, strlen(NewData)); 
    SetWindowText(EditControl, FinalText); 
    free(Result); 
    return; 
} 

是否有無論如何我可以直接附加文本到編輯控件?不需要獲取數據,然後再設置一次?

+0

http://www.codeguru.com/forum/showthread.php?t=350435他們提到文本末尾的編輯選擇 – L7ColWinters 2012-01-28 13:22:02

回答

3

這樣做並沒有什麼特別的錯誤,這是在人類時代執行的。所以使用起來比用戶可以觀察到的要快。作爲替代,您可以使用EM_SETSEL將選擇設置爲現有文本的末尾,不選任何內容,EM_REPLACESEL可以添加文本。 Winforms的TextBoxBase.AppendText()使用的技巧。

+0

我在MSDN上檢查了「EM_SETSEL」消息,它沒有顯示如何設置選擇到結束,僅使用0開始,-1作爲SendMessage()參數 – 2012-01-28 13:43:11

+0

WParam =開始選擇,將其設置爲TextLen。 LParam =選擇結束,將其設置爲TextLen。你的Shift鍵有什麼問題? – 2012-01-28 13:45:25

+0

行得通:D,ty – 2012-01-28 13:49:15