0

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

//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”(或看起来像“L”的东西)。我认为这是我的指针有问题,但我不确定。我是新手,所以如果有更简单的方法,请告诉我。

4

1 回答 1

3

您正在返回一个指向在函数返回之前被销毁的临时对象的指针。

与其返回 a char *,不如返回 a std::string

于 2012-07-27T21:20:13.180 回答