【发布时间】:2010-06-01 12:59:04
【问题描述】:
在 C# (.Net) 中,您可以创建一个面板并将自动滚动设置为 true。然后你可以在其中添加控件,包括超出它的大小,然后它会滚动。
我想知道在 c++(不是 .net)中使用真正的 WinAPI 时,如何获得相同的结果。
我必须跟踪里面的控件并在滚动时将它们全部移动吗?或者有没有像 C# 那样更简单的方法。
谢谢
【问题讨论】:
在 C# (.Net) 中,您可以创建一个面板并将自动滚动设置为 true。然后你可以在其中添加控件,包括超出它的大小,然后它会滚动。
我想知道在 c++(不是 .net)中使用真正的 WinAPI 时,如何获得相同的结果。
我必须跟踪里面的控件并在滚动时将它们全部移动吗?或者有没有像 C# 那样更简单的方法。
谢谢
【问题讨论】:
对于编辑控件(文本框),您可以在通过 CreateWindow 或 CreateWindowEx 创建它时提供 ES_AUTOVSCROLL。要在一个窗口中为多个控件添加滚动条,我相信你必须手动完成。编写一个函数来计算所有子控件的垂直高度+它们之间的间距,如果它小于窗口,则添加一个垂直滚动条,如果它较大,则删除垂直滚动条(如果存在)。请务必在添加/删除子控件和调整窗口大小后调用它。
【讨论】: