在 C++ 的 EDITTEXT 框中禁用文本编辑,同时保持启用滚动

Spa*_*117 4 c++ winapi

所以我的困境来自于使用 Windows API 在 C++ 中制作 UI。我需要一个 EDITTEXT 框,它允许滚动但不允许用户编辑显示在框中的文本。到目前为止,它看起来像这样。

EDITTEXT        ID_STATUS,7,237,439,50, WS_VSCROLL | ES_MULTILINE 
Run Code Online (Sandbox Code Playgroud)

如果文本很长,这允许滚动文本并将其分成新行。但是,如果我为此添加 DISABLED 选项,它将禁用滚动条和文本。解决这种情况的最佳方法是什么?我也试过添加

SendDlgItemMessage(ID_STATUS, EM_SETREADONLY, 0, 0);
Run Code Online (Sandbox Code Playgroud)

在预览 UI 以查看这是否会禁用文本编辑之前,但它不会。任何帮助,将不胜感激。

And*_*ers 7

EM_SETREADONLY是正确的,但您实际上没有要求它为只读。尝试

SendDlgItemMessage(ID_STATUS, EM_SETREADONLY, TRUE, 0);
Run Code Online (Sandbox Code Playgroud)

参数

指定是设置还是删除 ES_READONLY 样式。TRUE 值设置 ES_READONLY 样式;值为 FALSE 会删除 ES_READONLY 样式。

您还可以ES_READONLY在创建控件时指定样式。

  • 不,`ES_READONLY` 是一种样式,仅设置样式就意味着 true。 (2认同)