VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 529|回复: 6

[讨论] 寻找win32 实现的 内嵌滚动条重绘的相关资料

[复制链接]
50_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-10 10:42:29 | 显示全部楼层 |阅读模式
如题
寻找win32 实现的 内嵌滚动条(非滚动控件)重绘的相关资料,最好有源码,思路(含关键消息处置和重绘思路)




上一篇:推荐3本书读一读
下一篇:win32 绘图
50_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-10 14:14:25 | 显示全部楼层
早先曾在codeproject看到过一个VC实现,大概思路似乎是NC调整、定时刷新、子控件遮挡等,不过由于MFC过于封装,无法一窥全貌,关键消息处理没能理清,多次尝试在win32上实现,未能成功,比较倾向于一个纯win32的实现。
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-10-10 16:23:16 | 显示全部楼层
丧德·彪夫斯基 发表于 2019-10-10 14:14
早先曾在codeproject看到过一个VC实现,大概思路似乎是NC调整、定时刷新、子控件遮挡等,不过由于MFC过于封 ...

你不会想开发界面库吧,国内都没多少人真正能用win32 api做好,bat和迅雷的界面库都有Bug。
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-10-10 16:31:48 | 显示全部楼层
楼主对界面理解这么深,能不能发些帖,教教我们控件使用?
01_avatar_middle
最佳答案
38 
online_admins 发表于 2019-10-10 18:02:50 | 显示全部楼层
https://www.codeproject.com/Arti ... n-Win-API-Scrolling
这里有一个,不知道是否满足楼主的需求,也可能就是之前楼主看的那个
50_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-14 10:15:11 | 显示全部楼层
ScrollWindowEx 进行重绘非常复杂,对于标准控件重绘走到这个地步代价过大,对于自定控件倒是可以考虑,对于@admin 提到的文章,个人感觉能力有限。
我看到的文章是很早的,VC6时代的东西。周末仔细看了一下,能不能达到预期?能。是不是一个好的重绘?绝对不是,但是简单。

所以多少有一点价值,这里将其整理一下,各位看官如果逼急了没得招,可以一试。

我的代码以 TreeView的垂直滚动条为例,在win32下面做了一下简单尝试,里面bug还很多,仅是实现尝试,未封装,结论是可行。
其思路如下:
1、创建一个panel容器,它有两个子控件:treeview 容器 和 垂直滚动条的绘制区(后面可以考虑不用句柄,直接使用Panel的dc);treeview容器有承载TreeView控件。
2、关于遮挡思路:非客户区的重绘我这边没有成功(WM_NCCALCSIZE),采用粗暴的遮挡思路,treeview的容器仅容纳 TreeView的客户区大小,非客户去滚动条被排除在外。
3、垂直滚动绘制区负责响应鼠标消息、滚动条重绘展示等,并将其转发给真正的TreeView。

效果图:

scrollbar_redraw

scrollbar_redraw


实现代码(可编译运行,附编译器版本,有bug,未细查)
  1. >cl treeview_scrollredraw.cpp
  2. 用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.16.27024.1 版
  3. 版权所有(C) Microsoft Corporation。保留所有权利。

  4. treeview_scrollredraw.cpp
  5. Microsoft (R) Incremental Linker Version 14.16.27024.1
  6. Copyright (C) Microsoft Corporation.  All rights reserved.

  7. /out:treeview_scrollredraw.exe
  8. treeview_scrollredraw.obj
复制代码


寻找win32 实现的 内嵌滚动条重绘的相关资料 treeview_scrollredraw.rar (6.68 KB, 下载次数: 2)
05_avatar_middle
最佳答案
0 
在线会员 发表于 2020-7-23 21:49:18 | 显示全部楼层
好好学习,天天向上
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-21 04:52

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表