当我做的时候
wnd = CreateWindow("EDIT", 0,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN,
x, y, w, h,
parentWnd,
NULL, NULL, NULL);
一切都很好,但是如果我删除WS_VSCROLL和WS_HSCROLL然后执行以下操作,我不会得到它们因此具有不正确的窗口。为什么? 如果WS_VSCROLL和WS_HSCROLL都缺失,我不仅会得到一个不正确的窗口
style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
答案 0 :(得分:7)
创建窗口后无法更改某些控件样式。 ES_AUTOHSCROLL样式(基本上控制自动换行)就是其中之一; Edit Control Styles上的MSDN部分(有些间接地)说明了这一点。您可以使用SetWindowLong()设置位,但控件将忽略它们或行为不正常。
干净利落的唯一方法是使用所需的样式重新创建编辑控件。这实际上就是当您切换“自动换行”设置时记事本所做的事情。
答案 1 :(得分:2)
您可以使用ShowScrollBar()函数执行此操作。 如果要启用/禁用窗口的滚动条,您可能还会发现有趣的函数EnableScrollBar()。 最好的问候。