ScrollDialog可嵌套滚动对话框类

带滚动条的对话框类,适合内容多又不想分页的场景,挺实用的。它的妙处在于可以嵌在另一个对话框里,还能根据内容自动决定要不要显示滚动条,省心不少。

滚动条的事儿,其实绕不开几个经典 API。比如说SCROLLINFO这个结构体,能控制滚动条的范围、位置、页面大小这些核心参数。配合SetScrollInfoWM_SIZE一起用,动态调整滚动条可见性,体验会好多。

ScrollDialog类就是干这个的。它继承自CDialog或者CDialogEx,MFC 里该有的功能它都有。你只要在OnInitDialog()里初始化滚动条,配合OnSize实时调整,就能搞定大部分情况。

滑动事件怎么?简单。重写OnHScrollOnVScroll就行,分别对应水平和垂直滚动,里面通过nSBCodenPos来判断怎么滚,响应也快。

再提一点,OnGetMinMaxInfo这个方法也别漏了。你可以在里面设置最小/最大尺寸,避免用户把窗口缩成一坨,啥都看不见,还能顺带触发滚动条的显示逻辑。

至于怎么嵌入另一个对话框?直接用Create动态创建子对话框就行,别忘了用DestroyWindow销毁。父对话框也要监听一下子对话框的滚动消息,这样才能及时更新界面,不然滚起来不连贯。

如果你经常遇到内容太多放不下,又不想分多个界面,真的可以考虑用这个类,嵌套灵活,逻辑也清晰,还挺省事的。

rar
test.rar 预估大小:2个文件
file
ScrollDialog.h 2KB
file
ScrollDialog.cpp 6KB
rar 文件大小:2.69KB