0

我正在使用visual studio rc 在win32 c 中制作一个程序,但我不知道如何完成这个看似简单的任务。我有一个静态文本控件、一个编辑控件和一个按钮。当用户单击按钮时,我不希望程序获取编辑控件中的文本并将其添加到静态文本框中的任何内容中。经过很多头痛和各种尝试,我仍然无法让它工作。我可以很好地从编辑控件中检索文本,但是任何将其添加到静态控件的尝试都会崩溃。好吧,实际上只是为了澄清,我可以很好地设置文本;它只是添加到使程序崩溃的现有文本中。有人可以发布一些代码,让我可以使用 GetWindowText() 和 SetWindowText() 来执行此操作,(或者如果它更可取的话)。这是我所拥有的:

SendMessage(hwndEditControl, WM_GETTEXT,255,(LPARAM)editbuffer);
GetWindowText(hwndTextControl, (LPWSTR)allText, GetWindowTextLength(hwndTextControl));
//function to add data, please create on
SetWindowText(hwndTextControl, (LPCWSTR)allText);}
//where
static TCHAR*       editbuffer = new TCHAR; //feel free to change these declarations
static TCHAR*       allText    = new TCHAR;

非常感谢任何帮助!谢谢!

4

1 回答 1

1

您只为字符串缓冲区保留一个字符。所以而不是

static TCHAR*       editbuffer = new TCHAR;
static TCHAR*       allText    = new TCHAR;

你必须保留更多的内存,例如:

static TCHAR*       editbuffer = new TCHAR[255];
static TCHAR*       allText    = new TCHAR[255];

这将为您提供可以容纳 254 个字符和终止空字符的字符串缓冲区。

但是,我建议您只需在函数内的堆栈上保留内存:

void OnButtonClick()
{
    TCHAR editbuffer[255] = {0};
    TCHAR allText[255] = {0};
    ...
}
于 2012-07-29T10:48:33.537 回答