你好 @半仙 雷 ,
你手动调用的 SetScrollInfo() 很可能被编辑控件的内部滚动条管理覆盖了。
与其子类化 EDIT 控件,不如创建你自己的窗口类以获得完全控制,例如这样:
// 注册一个自定义的十六进制编辑器窗口类
WNDCLASSEXW wcex = { 0 };
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = HexEditProc; // 你自己的 WndProc
wcex.hInstance = hInst;
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.lpszClassName = L"HexEditorClass";
RegisterClassExW(&wcex);
// 使用 WS_VSCROLL 创建
hHexEdit = CreateWindowExW(
0, L"HexEditorClass", L"",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER,
10, 10, 760, 500,
hWnd, (HMENU)1001, hInst, NULL
);
或者,你也可以移除手动的滚动条管理,让 EDIT 控件自己内部处理。
你可以参考这个小示例:
希望这能帮到你。