我创建了一个窗口,然后在这个窗口上创建了 50 个按钮,但我只能在我的窗口上看到 10 个按钮。由于我无法向下滚动窗口,其余的都看不见了。
我通过添加添加了自动滚动到窗口
WS_VSCROLL | WS_HSCROLL | ES_AUTOVSCROLL | ES_AUTOHSCROLL
到CreateWindowEx函数的窗口样式参数。通过这样做,我可以在窗口上看到一个滚动,但这个滚动是不可移动的。
在这种情况下,添加自动滚动到窗口以查看所有 50 个按钮的可能且简单的解决方案是什么?
我创建了一个窗口,然后在这个窗口上创建了 50 个按钮,但我只能在我的窗口上看到 10 个按钮。由于我无法向下滚动窗口,其余的都看不见了。
我通过添加添加了自动滚动到窗口
WS_VSCROLL | WS_HSCROLL | ES_AUTOVSCROLL | ES_AUTOHSCROLL
到CreateWindowEx函数的窗口样式参数。通过这样做,我可以在窗口上看到一个滚动,但这个滚动是不可移动的。
在这种情况下,添加自动滚动到窗口以查看所有 50 个按钮的可能且简单的解决方案是什么?
您将不得不处理 WM_VSCROLL 和 WM_HSCROLL 消息。
您必须处理滚动条的按钮消息。您使用WS_VSCROLL | WS_HSCROLL您已经注意到可以看到它们的广告启用了滚动条。然而使用ES_AUTOVSCROLL | ES_AUTOHSCROLL并不神奇地意味着窗口会滚动。这些标志用于编辑框,因此在添加字符时它们会自动滚动。您的窗口无法识别这些。
因此,当用户单击滚动条上的按钮时,您必须在消息处理程序中编写一些代码,以自行移动窗口。
由于直接使用 WinAPI 并不容易,我建议使用像 wxWidgets 或 QT 这样的 GUI 库,这将减少错误并使您的生活更轻松,因为已经实现了很多您可能会使用的功能。
如果您出于某种原因坚持使用 WinAPI,您可能必须自己编写大量代码..