如何在win32中的静态控件中向现有文本添加文本

时间:2012-07-29 04:51:24

标签: c winapi textbox win32gui

我正在使用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;

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

1 个答案:

答案 0 :(得分: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};
    ...
}