gpt4 book ai didi

c++ - 如何将 char[256] append 到编辑控件的内容?

转载 作者:行者123 更新时间:2023-11-28 00:24:57 25 4
gpt4 key购买 nike

我正在开发一个小型 GUI 计算器项目,我需要向编辑控件的内容 append 一些内容。我目前使用的功能是:

int CharControl = 256;

void AddToEditMainText(char WhatToAdd[CharControl]) {
char CurrText[CharControl] = "";
GetDlgItemText(MainWindow, EDIT_MAIN, CurrText, CharControl);
char NewText[CharControl] = "";
malloc(strlen(NewText) + strlen(WhatToAdd) + 1);
strcpy_s(NewText, CurrText);
strcat_s(NewText, WhatToAdd);
SendMessage(EditMain, WM_SETTEXT, NULL, LPARAM((LPCSTR)&NewText));
}

我对 C++ 比较陌生,所以这是我的第一个 GUI 项目。任何帮助是极大的赞赏。谢谢。

最佳答案

您没有将 malloc() 的结果分配给任何东西,因此您正在泄漏内存。你应该做一些更像这样的事情:

void AddToEditMainText(char *WhatToAdd)
{
int iLen = GetWindowTextLen(EditMain) + strlen(WhatToAdd) + 1;
char *NewText = malloc(iLen);
if (NewText)
{
GetWindowText(EditMain, NewText, iLen);
strcat_s(NewText, iLen, WhatToAdd);
SetWindowText(EditMain, NewText);
free(NewText);
}
}

我会建议一种不同的方法,它不需要您在 append 到当前文本之前检索它:

void AddToEditMainText(char *WhatToAdd)
{
DWORD dwStart, dwEnd;
SendMessage(EditMain, EM_GETSEL, WPARAM(&dwStart), LPARAM(&dwEnd));
int iLen = GetWindowTextLength(EditMain);
SendMessage(EditMain, EM_SETSEL, iLen, iLen);
SendMessage(EditMain, EM_REPLACESEL, TRUE, LPARAM(WhatToAdd));
SendMessage(EditMain, EM_SETSEL, WPARAM(dwStart), LPARAM(dwEnd));
}

关于c++ - 如何将 char[256] append 到编辑控件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com