|
对彩色列表框用了一个比较简单的思路,先在内存创建一个内存DC后,根据列表框数据在内存DC中实时的绘画出一张彩色数据位图,通过重新设置的listbox窗口函数,截获WM_Paint消息,用BitBlt函数将内存DC中的位图刷入listboxDC中.
在做题时一直有一个很大的疑惑,VBA的listbox中滚动条产生的消息只有一个WM_paint消息,其后的wParam,lParam值为0,导至不能通过WM_paint消息来控制listbox的滚动条,致使位图也不能随滚动条移动而相应移动.本想自绘一个滚动条的,但那工程量又比较大了,偷点懒放弃这个笨想法了(一定有更好的办法只是自己没有想到),等开卷时学习大家的一点先进技术了.
** yangchun88 对API比较熟悉,代码中使用了很多的API函数。
答卷完成情况:
1、按要求1、2完成控件的封装;
2、提供了单个列表项的ForeColor,未提供BackColor属性(代码中使用了模块级变量BackColor,不能进行设置),没有发现提供对某个指定列表项进行以上属性设置的功能.使用SelectedItem对象好象也不正确。
3、未完成ListIndex、Enabled、Visible等属性;
4、RemoveItem方法执行结果有时不正确.
5、提供了事件,但因为未实现滚动条的滚动跟随,导致MouseMove事件不正确.
6、允许多选,但没有提供选项开关或相关属性。
针对本答卷主要有以下问题和建议:
1、类模块中使用了用户窗体名称,不能被直接移植到其它工程;
2、因为重新指定窗口函数,不可避免的使用了标准模块,未达到完全封装的要求;
3、正如10楼所述,使用Frame控件会好些,希望能够学习您修改后的代码;
4、多个实例时,不正确。
------清风_ll
[ 本帖最后由 清风_ll 于 2009-6-28 21:37 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
1
查看全部评分
-
|