C 是否将文本附加到编辑控件?(Windows API)

C 是否将文本附加到编辑控件?(Windows API),c,windows,winforms,winapi,C,Windows,Winforms,Winapi,我用C语言创建了一个简单的表单,并在其中添加了一些控件。但是对于编辑控件,我不能像列表框控件那样向其追加文本。我所能做的就是从编辑控件获取文本,向其中添加所需的行,然后再次设置文本。这是我为完成这项工作而编写的代码 void AddText(HWND EditControl, char *NewData) { int TextLen = GetWindowTextLength(EditControl); char *Result = malloc(TextLen + strlen

我用C语言创建了一个简单的表单,并在其中添加了一些控件。但是对于编辑控件,我不能像列表框控件那样向其追加文本。我所能做的就是从编辑控件获取文本,向其中添加所需的行,然后再次设置文本。这是我为完成这项工作而编写的代码

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;
}

我是否可以直接将文本附加到编辑控件中?无需获取数据,然后重新设置?

这样做没有什么特别的错误,它是在人工时间执行的。因此,让它比用户可以观察到的速度更快没有什么意义。或者,可以使用EM_SETSEL将选择设置为现有文本的结尾,不选择任何内容,使用EM_REPLACESEL追加文本。Winforms的TextBoxBase.AppendText()使用的技巧。

他们在文本末尾提到编辑选择。我检查了MSDN上的“EM_SETSEL”消息,它没有显示如何将选择设置为结尾,只是使用0,-1作为SendMessage()ParamsWParam=选择的开始,将其设置为TextLen。LParam=选择结束,将其设置为TextLen。你的换档钥匙到底出了什么问题?