ScrollDialog可嵌套滚动对话框类
带滚动条的对话框类,适合内容多又不想分页的场景,挺实用的。它的妙处在于可以嵌在另一个对话框里,还能根据内容自动决定要不要显示滚动条,省心不少。
滚动条的事儿,其实绕不开几个经典 API。比如说SCROLLINFO这个结构体,能控制滚动条的范围、位置、页面大小这些核心参数。配合SetScrollInfo和WM_SIZE一起用,动态调整滚动条可见性,体验会好多。
ScrollDialog类就是干这个的。它继承自CDialog
或者CDialogEx
,MFC 里该有的功能它都有。你只要在OnInitDialog()
里初始化滚动条,配合OnSize
实时调整,就能搞定大部分情况。
滑动事件怎么?简单。重写OnHScroll
和OnVScroll
就行,分别对应水平和垂直滚动,里面通过nSBCode
和nPos
来判断怎么滚,响应也快。
再提一点,OnGetMinMaxInfo
这个方法也别漏了。你可以在里面设置最小/最大尺寸,避免用户把窗口缩成一坨,啥都看不见,还能顺带触发滚动条的显示逻辑。
至于怎么嵌入另一个对话框?直接用Create
动态创建子对话框就行,别忘了用DestroyWindow
销毁。父对话框也要监听一下子对话框的滚动消息,这样才能及时更新界面,不然滚起来不连贯。
如果你经常遇到内容太多放不下,又不想分多个界面,真的可以考虑用这个类,嵌套灵活,逻辑也清晰,还挺省事的。
test.rar
预估大小:2个文件
ScrollDialog.h
2KB
ScrollDialog.cpp
6KB
2.69KB
文件大小:
评论区