Win32 编辑控件滚动条在 Windows 10 中不起作用

Win32 Edit control scrollbars not working in Windows 10

我目前正在尝试在 Win32 控件中实现一些滚动条,但它们在设置 WS_HSCROLL 标志时不起作用。

从我在其他网站上读到的内容来看,它们应该“理论上”起作用,因为 class 接收消息并且不会将其推送给父 window(这也是丰富的控件工作)。

To add a horizontal scroll bar, use the style WS_HSCROLL; to add a vertical scroll bar, use the style WS_VSCROLL. An edit control with scroll bars processes its own scroll bar messages. Source

但由于某种原因,滚动条不会移动,如果您尝试手动移动它,它只会 returns 正方形到开头,而不会做任何移动。

这是一个示例代码:

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR pStr, int nCmd)
{
    WNDCLASS wcx = { 0 };
    wcx.lpfnWndProc = DefWindowProc;
    wcx.hInstance = hInst;
    wcx.hCursor = LoadCursor(0, IDC_ARROW);
    wcx.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_BTNFACE + 1);
    wcx.lpszClassName = L"SIMPLEWND";
    RegisterClass(&wcx);

    int desktopwidth = GetSystemMetrics(SM_CXSCREEN);
    int desktopheight = GetSystemMetrics(SM_CYSCREEN);
    HWND hwnd = CreateWindowEx(0, L"SIMPLEWND", L"Main Window", WS_OVERLAPPEDWINDOW,
        desktopwidth / 4, desktopheight / 4, desktopwidth / 2, desktopheight / 2, 0, 0, hInst, 0);
    CreateWindow(L"edit", L"placeholder", WS_CHILD | WS_VISIBLE | WS_BORDER
        | WS_HSCROLL | ES_AUTOHSCROLL, 10, 10, 200, 90, hwnd, (HMENU)1, hInst, 0);

    ShowWindow(hwnd, nCmd);
    MSG msg;
    while (GetMessage(&msg, 0, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}

我也试过删除 ES_AUTOHSCROLL 因为我读到滚动条在设置该样式时停止工作但没有任何变化(只是你不能再滚动经过控制矩形)

已修复!似乎两个滚动条仅在定义 ES_MULTILINE 时才起作用。

原始文档对此没有任何说明,但似乎是这样。我通过尝试 this example 然后删除东西直到它坏了来解决它。