我正在使用Visual Studio RC在Win32 C中进行程序,我无法弄清楚如何做到这一看似简单的任务。我有一个静态文本控制,编辑控件和一个按钮。当用户单击按钮时,我不会将程序拍摄编辑控件中的文本,并将其添加到静态文本框中的任何内容。经过很多头痛和各种各样的尝试,我仍然无法做到这一点。我可以从编辑控制罚款中检索文本,但任何尝试将其添加到静态控制崩溃。实际上只是为了澄清,我可以设置细本;它只是添加到崩溃程序的现有文本。有人可以发布一些代码,这些代码可以使用getwindowtext()和setwindowtext(),(或者如果是others的其他东西)。这是我有的:

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

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

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top