MFC单文档多视图显示bmp工作小记--第2篇

      先描述一下心情,今晚是值得高兴的,我独立解决了一个自己曾经觉得不可能解决的问题。非常surprise,它给我的启示是:没有什么是不可能的,奇迹也许就出现在下一刻。

      问题是这样的,在CSplitterWnd的一个子窗口里面用CListView显示一些缩略图,其实就是直接把一些bmp加进imagelist,再GetListCtrl().SetImageList等等。但是,显示的时候出现了一个问题,用鼠标点击选中某一个缩略图的时候,选中的缩略图会消失,只剩下一块空白。刚开始用的是一些用QQ截屏得来的模型图,就怀疑是不是图的问题,所以就找了一些原本保存的bmp图片,一试,没有问题。奇怪。看它们的不同,发现一点,正常显示的图片的位深度是32位,不正常的是24位。然后试图把32位的图转为24位的试一下,用的是XP自带的画图工具,把原图打开再另存为24位位图,再用这个新生成的图去试,一样正常。但是,这里出了一个小差错,画图工具在另存为的时候虽然提示的格式是24位位图,但真的生成的是24位的位图吗?我原本以为是的,就没有再去查看,所以当这个新生成的图的测试结果是正常显示时,我马上抛弃了图的位深度不同是造成显示不同的原因这个想法,事实证明,我是错的多么厉害。画图工具把一个32位位图另存为24位位图时,得到的还是32位的位图!没错,问题就出现在位图的深度上,但是,我也是乱试试出来的,当然现在也不知道位图深度不同为什么会造成这个问题。

     其实,解决问题的过程中并不知道问题出在哪里,只是在到处瞎碰,一直很纠结于是图片的问题还是程序的问题,试过各种图片,也试过改各种函数或其参数,然而一直没得到解决。最重要的是在网上搜完全没有相关信息,非常疑惑,难道没人碰到过这个问题?所以,完全没有头绪,不知道方向在哪。当时只想着是不是改成载入JPG图片(代码会改很多),然后不经意间看到这个函数m_imageList.Create(100, 100, ILC_COLOR32, 0, 2),当时想着把32改成16试一下,其实根本不抱期望。但是,一出来,点击选中图片,居然正常显示!突如其来的惊喜!

      总结。这个问题,说到底还是程序的问题——程序的参数设置使得对24位的图片的显示存在问题。对MFC的函数及其参数不够了解,使得自己往往把握不到问题的重点。还有,位图转换后没有进一步确认,这是做事的一种疏忽大意,是一个需要记住的教训。最后,没有什么是不可能的,相信自己!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值