轻松实现对外部位图的浏览

显示位图一般的方法是利用控件,利用Cdib类是一种不错的方法,可以打开外部位图,但手头没有Cdib类文件怎么办,对于咱们这些新手来说真是苦恼,近日发现一种简单的方法,利用API函数实现。

对于多个外部位图,我们还可以使用CFileFind这个被MFC封装的类配合浏览控件对位图进行浏览。

1,在需要打开位图的地方加入以下代码:

CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"位图文件(*.BMP)|*.BMP||");
if(dlg.DoModal()==IDOK)
{
  Caculate();//遍历当前文件夹下的位图并把各文件名保存在数组中
  hwnd = GetDlgItem(IDC_PIC);
  hDesDC = hwnd->GetDC()->m_hDC;
  hSrcDC = CreateCompatibleDC(hDesDC);
  hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),
                dlg.GetPathName(),
                IMAGE_BITMAP,
                0,
                0,
                LR_LOADFROMFILE|LR_CREATEDIBSECTION);
  //  HBITMAP hBitmap=LoadBitmap(AfxGetInstanceHandle(),dlg.GetPathName());
  GetObject(hBitmap, sizeof BITMAP, &bm);
  SelectObject(hSrcDC, hBitmap);
  hwnd->GetClientRect(&rect);
  ::SetStretchBltMode(hDesDC,COLORONCOLOR);
  ::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
  SetTimer(IDT_TIMER,30,NULL);
  //-----------------
  iPos=0;
  while(family[iPos]!=dlg.GetPathName())
  {
    iPos++;
  }
  m_Scroll.SetScrollRange(0,picnum-1);
  m_Scroll.SetScrollPos(iPos);
  m_Num.Format("第 %d 张,共 %d 张",iPos+1,picnum);
  UpdateData(false);
}
else
{
  SetTimer(IDT_TIMER,30,NULL);
}

注意:如果碰到位图文件比较小的话,打开速度会很快,由此会产生通用对话框遮盖后的黑块,所以这里引入了时间控件进行后继刷新。 ::SetStretchBltMode 为填充模式,非常重要,如果不设置,显示效果会惨不忍睹。

以下是遍历位图的函数caculate()

picnum=0;
CFileFind finder;
Work = finder.FindFile("*.BMP");
while(Work)
{
  char FileName[250];//文件名最长为250个字符,不能设得太短
  Work=finder.FindNextFile();//类似指针会指向下个位图
  sprintf(FileName,"%s",finder.GetFilePath());//得到绝对路径
  family[picnum]=FileName;//存文件名
  picnum+=1;
  // CString string;
  //  string.Format("picnum%d",picnum);
  //  MessageBox(string);
}

本程序在vc6.0下调试通过。

时间: 2024-12-08 02:33:15

轻松实现对外部位图的浏览的相关文章

IE8历史记录也能玩搜索

  假如之前我们用IE8浏览器访问过某个很有用的网站,当时一时心急却忘了把该网址保存在收藏夹,在要怎么把它给找出来?这样的话我们只能在IE浏览器的历史记录里一条一条筛?要是浏览里面的记录过多的话,给我们的寻找会带来一定的麻烦.现在有了IE8浏览器会让这个问题变的更轻松起来,IE8的浏览历史记录搜索功能可以为我们方便的解决这个问题. IE8历史记录排序新的"浏览历史记录"视图允许您按"站点名称"."最近访问的站点"."今天的访问顺序&qu

网页开发者必备的20款在线实用工具

  互联网已经成为我们生活中无法割裂的一部分,生活中越来越多的服务都与网络紧密的结合到一起,深刻地影响着我们的生活和工作,很难想象没了它我们的日常生活会多麻烦.我们在公交上刷微博看新闻,在闲暇的时候在网络上寻找自己感兴趣的东西,在公司工作借助网络来宣传自己的企业,寻找合作伙伴和客户,等等等等. 与此同时,网络技术的发展也使得越来越多的事情可以在网络上完成--比如,设计和开发.这次我们推荐的20个网页开发工具都无需安装,借助浏览器,网页开发者可以在这里便捷地完成许多网页工作,称之为必备并不为过.

我们为何要在设计中重视“留白”

  留白的优秀案例--但是还有一点装饰--Layervault的个人网站.从本质上讲,留白区域是"未使用的区域",尽管留白区域看起来未使用,没什么作用,但实际上留白区域的作用相当大,给予设计呼吸的空间,提供了布局上的平衡.留白区域的环绕与陪衬,良好的衬托出中心区域的表现. 我们为何要重视留白? 如果你在浏览网站,当布局太糟糕时,你会很费力的才能确定信息内容;太紧密的字间距.段间距,没有明显的区分隔断(或者说没有足够的留白空间),那么这个网站的用户体验肯定是很差的. Mailchimp的

盘点2017汉诺威工业展上IT厂商的10款物联网新品

汉诺威工业展览会(Hannover Messe)是每年在德国举行的工业自动化盛会,今年物联网服务和产品成为关注焦点. IT厂商渴望向工厂客户和制造商客户展示他们新的物联网服务,以及与运营技术公司新建立的合作伙伴关系. 从预测维护工具到"数字化双胞胎"--物理资源的数字同类,以展示物体的实时状态和工作条件--这次展会还把工业市场的前沿趋势推向了前端. 下面就是今年汉诺威工业展览会上最引人关注的物联网新闻: SAP新推出的Distributed Manufacturing平台 SAP在今年

Qt之图形视图框架

简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部件(view widget)来显示可以缩放和旋转的图元. 框架包括一个事件传播架构,支持场景(Scene)中的图元(Item)进行精确的双精度交互功能.图元可以处理键盘事件.鼠标按下.移动.释放和双击事件,同时也能跟踪鼠标移动. 图形视图使用一个BSP(Binary Space Partitioning - 二叉空间分割)树,以提供对图形元素的快速查找,正因为如此,它可以使超大的场景

初创企业移动产品设计会遇到哪些问题?

所有以消费者为最终目标的应用开发者都应该解决以下三个核心挑战: 与众不同的产品体验 形成用户基础,扩大用户数量 保持用户参与度 在移动领域,能覆盖到上述三点的策略和方法还寥寥无几.下面,我会将把这三点拆开来谈一谈并在最后提出我心中的重要问题. 打造与众不同的产品体验 迄今为止,移动设计的主流一直是小屏幕.触控手势模版的定义和界面导航的更新换代.这些方面的提升固然重要,但是它们在激发产品体验的潜能上却显得有点力不从心,在创造可持续性的产品特色方面也是如此(由新老更迭时设计上的不一致性导致).为用户

网站文案该怎么设计

身为一个自由职业写作者,我曾为Sofa的好几个网站做过创建.设计,还有改版的工作.既然已经在他们那儿花了如此多时间,那么我就想在Sofa的Blog上写点儿东西. 上网的时候最让人烦躁的就是看到那些挤满了字的网页,还有就是需要经过很多次的点击 - 浏览 - 更多的点击,才能找到要找的东西. 网页上的文案应该设计的清晰明了,这样读者才能够快速轻松的进行扫描式浏览.像网站界面一样,好的文案也应该和读者的直觉符合.为了做到这一点,我遵循以下十条规则: 一. 了解你要写的产品 "我们的产品功能十分强大!&

介绍海豚浏览器

"碎片时间"往往指的是工作学习之余的比较短的零碎时间,比如等车.排队.等人等情况下的这样的小段时间.利用好的"碎片时间",可以让生活更充实和更多一些乐趣.对于一般上班族来说,用手机来打发碎片时间是最多的了.那么今天小编要给大家介绍的是用手机浏览器海豚手机浏览器打发"碎片时间"的7种方式,让生活更有趣. 看新闻资讯 打开海豚浏览器,进入海豚中心,海豚中心提供了多种新闻可供选择,点击"更多"可以查看到多种分类资讯.如果你的手机是A

移动应用周刊:i优选、淘身边、卡惠、租车达人等

Introducing the all-new Read It Later – now called Pocket. Pocket is everything you love about Read It Later, now with a cleaner, lighter reading and viewing experience, and a host of new features to help you see what you've saved-from articles to vi