zoukankan      html  css  js  c++  java
  • listctrl如何显示位图

    listctrl 显示位图,只要建立一个CImageList 和listctrl建立连接就可以了;

    下面详细步骤:

    1、在头文件里面:.h

    CImageList m_imagelist; //-----创建一个新的图像列表框;

    CBitmap bitmap1,bitmap2,bitmap3,bitmap4; //------创建几个位图;

    2.在实现文件里面:.cpp

    m_showalarm.SetExtendedStyle(m_showalarm.GetExtendedStyle()| LVS_EX_SUBITEMIMAGES );

    这里的LVS_EX_SUBITEMIMAGES 使listctr可以使用位图资源;

    bitmap1.LoadBitmapA(IDB_MAP1);   //------加载位图;

    bitmap2.LoadBitmapA(IDB_MAP2);

    bitmap3.LoadBitmapA(IDB_MAP3);

    bitmap4.LoadBitmapA(IDB_MAP4);

    m_imagelist.Create(32, 14,ILC_COLOR32|ILC_MASK, 0, 4);   //----- 实例图象框;
    m_imagelist.Add(& bitmap1, RGB(0, 0, 0));       //----- 图象框加载位图;
    m_imagelist.Add(& bitmap2, RGB(0, 0, 0));
    m_imagelist.Add(& bitmap3, RGB(0, 0, 0));
    m_imagelist.Add(& bitmap4, RGB(0, 0, 0));

    m_showalarm.SetImageList(&m_imagelist,LVSIL_SMALL);    //-----m_showalarm 是listctrl的变量名字;现在是listctrl 和 图片框建立连接;

    3、初始化listctrl ---

    m_showalarm.InsertColumn(0,"T1",LVCFMT_LEFT,39);
    m_showalarm.InsertColumn(1,"Text",LVCFMT_LEFT,82);
    m_showalarm.InsertColumn(2,"A1",LVCFMT_LEFT,32);
    m_showalarm.InsertColumn(3,"A2",LVCFMT_LEFT,32);
    m_showalarm.InsertColumn(4,"A3",LVCFMT_LEFT,32);

    这里是给listctrl 创建几个列及列头的名字;

    4、listctrl 创建数据--

    for(int j=0;j<strid.GetCount();j++)    //----striid 是我定义的一个字符串列表,里面保存着数据;
       {
         m_showalarm.InsertItem(j,NULL,1);    //--这里是插入一行;

         LVITEM item;                                 //这里我准备用item的方式进行插入数据;
         item.iItem=j;
         item.iSubItem=1;
         item.mask=LVIF_TEXT;               // 因为我在第二列准备插入的是文本所以这里用LVIF_TEXT;
         item.pszText=(LPSTR)(LPCSTR)strid.GetAt(j);
         m_showalarm.SetItem(&item);

        item.iItem=j;
         item.iSubItem=0;
         item.mask=LVIF_IMAGE;           //这是第一列我插入的是图片,用的是LVIF_IMAGE;
         item.iImage=2;     // ---------关键就在这里,因为图片框里面现在里面存放了4个图片,2是图片框里面的索引,从0开始。所以选择2就表明现在插入的图片时图片框里面的第三张图片;

            m_showalarm.SetItem(&item);       

      
        

          for(int i=2;i<4;i++)
           {
          item.iItem=j;
          item.iSubItem=i;
          item.mask=LVIF_IMAGE;
          item.iImage=1;                     //----- 这里两个列我也是插入图片,但是图片我选择的是图片框里的第2张图片,请注意,区别就在这里;想用什么图片只要在图片框里面加载上然后记住他的索引值就可以了。不过注意图片框里的图片要大小一致,不然会出现显示空图片或者乱码;
          m_showalarm.SetItem(&item);
         
         }
            }

    Ok。现在listctrl已经显示的是位图了。

  • 相关阅读:
    0909我眼中的编译原理
    你要的所有数据源都在这里了!
    JAVA多线程和并发基础
    写的代码小有成就+今日总结--购买产品---20200508
    mysql数据库时区问题
    【Spring】——声明式事务配置详解
    SpringBoot整合阿里云OSS文件上传、下载、查看、删除
    一文看懂:网址,URL,域名,IP地址,DNS,域名解析
    git快速入门
    批处理框架spring batch基础知识介绍
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1844933.html
Copyright © 2011-2022 走看看