6

当我做

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);
4

2 回答 2

9

某些控件样式在窗口创建后无法更改。ES_AUTOHSCROLL 样式(本质上控制自动换行)就是其中之一;MSDN 的Edit Control Styles部分(有些间接地)说明了这一点。您可以使用 SetWindowLong() 设置这些位,但控件将忽略它们或行为异常。

干净利落地执行此操作的唯一方法是使用所需样式重新创建编辑控件。这实际上是当您切换“自动换行”设置时记事本所做的。

于 2008-11-12T23:13:33.963 回答
3

您可以使用 ShowScrollBar() 函数来完成。如果您想启用/禁用窗口的滚动条,您可能还会对 EnableScrollBar() 函数感兴趣。最好的祝福。

于 2011-03-18T23:28:39.230 回答