将SetWindowText与两个缓冲区的组合一起使用

时间:2012-07-27 21:11:37

标签: c++ c winapi buffer

好吧,我有一个编辑控件和一个静态文本控件。当用户单击一个按钮时,我希望程序从编辑控件中获取文本并将其添加到静态文本控件中的文本中,然后将该新值设置为静态控件中的文本。所以我有一个函数将缓冲区附加到另一个,但我的程序似乎没有工作。这就是我所拥有的:

//when button message is recieved:
SendMessage(hwndEditControl, WM_GETTEXT,255,(LPARAM)editbuffer);
GetWindowText(hwndTextControl, (LPWSTR)allText, GetWindowTextLength(hwndTextControl));
allText = appendStrings((char*)editbuffer, (char*)allText);
SetWindowText(hwndTextControl, (LPCWSTR)allText);}

 // where appendStrings is defined as:

char* appendStrings (char* buffer1, char* buffer2)
{
    std::string string1(buffer1), string2(buffer2);
    std::string string3 = string1 + string2; 
    return (char*)string3.c_str();
}
//and
static char*        editbuffer = new char;
static char*        allText    = new char; //these are defined as so

所以无论如何,当我按下按钮时,我非常确定appendStrings函数是否正常工作,因为我认为它需要编辑框中的内容并将其添加到文本框中。我说"我认为"虽然是因为文本框中的字符串总是只是乱七八糟。它有时是随机符号或只是这些" l' s" (或看起来像" L" s)。我认为我的指针存在问题,但我不确定。我是新手,所以如果有更简单的方法,请告诉我。

1 个答案:

答案 0 :(得分:3)

在函数返回之前,您将返回指向正在销毁的临时字符的指针。

不是返回char *,而是返回std::string