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


任何帮助,不胜感激!谢谢!

最佳答案

您只为字符串缓冲区保留一个字符。所以代替

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

关于c - 如何在Win32中的静态控件中将文本添加到现有文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11706769/

10-11 22:43
查看更多