gpt4 book ai didi

winapi - 使用 SetWindowText() 函数添加新行

转载 作者:行者123 更新时间:2023-12-01 08:33:12 26 4
gpt4 key购买 nike

我创建了一个编辑窗口。
我希望一个字符串显示在一行中,另一个字符串显示在另一行中,但我正在执行的代码只显示第二个字符串。下面是我的代码片段:

hWndEdit = CreateWindow("EDIT", // We are creating an Edit control
NULL, // Leave the control empty
WS_CHILD | WS_VISIBLE | WS_HSCROLL |
WS_VSCROLL | ES_LEFT | ES_MULTILINE |
ES_AUTOHSCROLL | ES_AUTOVSCROLL,
10, 10,1000, 1000,
hWnd,
0,
hInst,NULL);
SetWindowText(hWndEdit, TEXT("\r\nFirst string\r\n"));

SetWindowText(hWndEdit, TEXT("\r\nSecond string"));

输出:

最佳答案

您只看到最后一行,因为 SetWindowText() 一次性替换了窗口的全部内容。

如果您想一次显示两行,只需在一次调用 SetWindowText() 时将它们连接在一起:

SetWindowText(hWndEdit, TEXT("\r\nFirst string\r\n\r\nSecond string"));

另一方面,如果你想在不同的时间插入它们,你必须使用 EM_SETSEL 消息将编辑插入符放在窗口的末尾,然后使用 EM_REPLACESEL 消息在当前插入符位置插入文本,如所述在本文中:

How To Programatically Append Text to an Edit Control

例如:
void AppendText(HWND hEditWnd, LPCTSTR Text)
{
int idx = GetWindowTextLength(hEditWnd);
SendMessage(hEditWnd, EM_SETSEL, (WPARAM)idx, (LPARAM)idx);
SendMessage(hEditWnd, EM_REPLACESEL, 0, (LPARAM)Text);
}

.
AppendText(hWndEdit, TEXT("\r\nFirst string\r\n"));
AppendText(hWndEdit, TEXT("\r\nSecond string"));

关于winapi - 使用 SetWindowText() 函数添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446969/

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