我有一个EditBox HWND tbLog
,以及下面这个不起作用的函数:
void appendLogText(char* newText)
{
int len = GetWindowTextLength(tbLog);
char* logText = new char[len + strlen(newText) + 1];
GetWindowText(tbLog, logText, len);
strcat(logText, newText);
SendMessage(tbLog, WM_SETTEXT, NULL, (LPARAM)TEXT(logText));
delete[] logText;
}
我这样调用它:
appendLogText("Put something in the Edit box.\r\n");
appendLogText("Put something else in the Edit box.\r\n");
首先,
TEXT()
函数实际上是做什么的?我已经尝试过带/不带它:(LPARAM)logText
和(LPARAM)TEXT(logText)
,就我所看到的而言,没有任何区别。其次,在我的追加函数中,我做错了什么?如果我注释掉
delete
行,那么第一次运行append函数时,我的Editbox中会出现垃圾字符,然后是消息。第二次运行它,程序就会崩溃。如果我不注释它,那么甚至第一次都会崩溃。
void appendLogText(LPSTR newText){ SendMessage(tbLog, EM_SETSEL, 0, -1); SendMessage(tbLog, EM_SETSEL, -1, -1); SendMessage(tbLog, EM_REPLACESEL, 0, (LPARAM)TEXT(newText)); }
- Ozzah