在C+;中的编辑文本框中禁用文本编辑+;同时保持滚动启用 我的困境来自于用Windows API在C++中制作UI。我需要有一个EDITTEXT框,它允许滚动,但不允许用户编辑框中显示的文本。到目前为止,看起来是这样的 EDITTEXT ID_STATUS,7,237,439,50, WS_VSCROLL | ES_MULTILINE 

在C+;中的编辑文本框中禁用文本编辑+;同时保持滚动启用 我的困境来自于用Windows API在C++中制作UI。我需要有一个EDITTEXT框,它允许滚动,但不允许用户编辑框中显示的文本。到目前为止,看起来是这样的 EDITTEXT ID_STATUS,7,237,439,50, WS_VSCROLL | ES_MULTILINE ,c++,winapi,C++,Winapi,这样,如果文本很长,可以滚动文本并将其拆分为新行。但是,如果我将DISABLED选项添加到此项,它将同时禁用滚动条和文本。解决这种情况的最好办法是什么?我还尝试添加 SendDlgItemMessage(ID_STATUS, EM_SETREADONLY, 0, 0); 在预览UI之前,查看这是否会禁用文本编辑,但不会。任何帮助都将不胜感激。EM_SETREADONLY是正确的,但您没有真正要求它为只读。试一试 SendDlgItemMessage(ID_STATUS, EM_SETREADO

这样,如果文本很长,可以滚动文本并将其拆分为新行。但是,如果我将DISABLED选项添加到此项,它将同时禁用滚动条和文本。解决这种情况的最好办法是什么?我还尝试添加

SendDlgItemMessage(ID_STATUS, EM_SETREADONLY, 0, 0);

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

EM_SETREADONLY
是正确的,但您没有真正要求它为只读。试一试

SendDlgItemMessage(ID_STATUS, EM_SETREADONLY, TRUE, 0);
wParam

指定是设置还是删除ES_只读样式。值为TRUE将设置ES_只读样式;值为FALSE将删除ES_只读样式


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

还有一个
READONLY
属性,它不同于
disabled
。请注意,它使组件看起来“活动”。我通过谷歌搜索发现了这一点。有时间试试看
windows禁用可滚动文本框
readonly
大多数情况下都会禁用编辑。你说它没有是什么意思?@acraig5075我把它添加到了一个UI呈现的地方。一旦呈现了UI,我仍然能够编辑EDITTEXT中的文本。因此我可以执行EDITTEXT ID_STATUS,7237439,50,WS_VSCROLL | ES|u MULTILINE | ES|u READONLY=TRUE?不,
ES|u READONLY
是一种样式,只是设置样式意味着TRUE。它可以工作,但是如果我单击它,编写文本的光标仍然会显示出来。你知道如何摆脱这个吗?@simon用户仍然可以复制文本,即使它是只读的。禁用窗口以防止出现这种情况。