gpt4 book ai didi

c++ - 编辑控件无法将文本设置为空字符串

转载 作者:太空狗 更新时间:2023-10-29 21:46:08 26 4
gpt4 key购买 nike

我有一个编辑控件:

    HWND hInput = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL |
ES_WANTRETURN,
0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_INPUT, GetModuleHandle(NULL), NULL);

当按下按钮时,我从中获取文本并尝试用空字符串替换它:

        TCHAR buff[2048];
memset(buff,0,2048);
GetWindowText(hInput, buff, 2048);
SetWindowText(hInput,"");

但之后在编辑控件中留下了一个新行。

有什么想法可以删除这条新线吗?提前致谢。

编辑:实际上然后按下按钮就可以了,没有换行。

编辑控件有一个消息过程,它捕获回车键并在按下按钮时执行与按钮相同的操作。程序如下:

LRESULT CALLBACK SubClassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{
switch (msg)
{
case WM_KEYDOWN:
switch (wParam)
{
case VK_RETURN:
TCHAR buff[2048];
memset(buff,0,2048);
GetWindowText(hInput, buff, 2048);
SetWindowText(hInput,"");
break;
}
break;

}
return CallWindowProc(DefProc, hwnd, msg, wParam, lParam);
}

但是这里它离开了新行。

最佳答案

当您处理 WM_KEYDOWN 时,您成功清除了编辑控件。

然后将该消息传递给基类,即编辑控件,并在文本中插入一个回车符。那是一种理论。如果它是正确的,那么只要不向基类发送 WM_KEYDOWN 消息就可以解决问题。

另一种说法是,WM_KEYDOWN 后面跟着一个 WM_CHAR(由 TranslateMessage 合成),编辑控件根据该消息添加回车符。如果它是正确的,那么你会遇到一个有趣的情况,你说你想要一个多行编辑控件,但你试图在每次用户尝试创建新行时清除内容。

我说错了 ES_WANTRETURN。这与对话框代码一起使用,以确保它不会完全窃取回车键。这就是我更改原始答案的原因。

关于c++ - 编辑控件无法将文本设置为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842215/

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