Visual Studio .NET 2002Visual Studio 6Visual C++ 7.0Windows 2000Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++
如何实现可滚动子对话框






4.96/5 (45投票s)
如何实现可滚动子对话框
引言
很多次我都遇到(并且希望你也遇到!)需要一种子对话框的情况,用作更大对话框、窗口或视图等内部的控件。填充这个子对话框的控件很容易。设置它的大小以适应父窗口则不太容易。所以,这里有一个可滚动的子对话框,我发现它在我的应用程序中非常有用。
代码
代码非常简单,并且很大程度上基于 MSDN 文章 HOWTO: Create a Resizable Dialog Box with Scroll Bars (Q262954)。我只是选择 WS_CHILD
和 WS_VSCROLL
样式创建了可滚动的对话框模板,并使用向导添加了 WM_SIZE
、WM_MOUSEWHEEL
和 WM_VSCROLL
消息。要在你的项目中使用的代码,请按照以下步骤操作:
- 将 dlgscrollable.h 和 dlgscrollable.cpp 添加到你的项目中
- 创建你自己的对话框资源模板,并替换头文件中的资源标识符
- 在父窗口中,添加一个成员变量,例如
CDlgScrollable* m_pdlgScrollable
,并在OnInitDialog
函数中创建新的CDlgScrollable
对象。 - 在父对话框资源模板中,你可以使用静态文本框作为占位符来计算我的可滚动子控件的矩形。
- 你可以根据需要轻松更改“手”光标,加载不同的资源
显然,很容易添加对水平滚动的支持,它是对称的,而且我实际上并不需要它…… :P
就这样了!
这就是全部!为我的糟糕英语道歉(我是意大利人),这是我的第一篇文章。希望不是最后一篇!感谢 DD 和 GM 提出的建议和评论,这是代码的最新版本,或者至少是未来两个月的最新版本!玩得开心!