CListCtrl使用详解

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                1。先来介绍REPORT类型的CListCtrl: 
首先使用下面的语句设置CListCtrl的style: 
  DWORD   SetExtendedStyle(   DWORD   dwNewStyle   ); 
其中 
  LVS_EX_CHECKBOXES   表示添加CheckBox 
  LVS_EX_FULLROWSELECT   表示选择整行 

  LVS_EX_GRIDLINES   表示添加表格线 

CListCtrl固定标题列宽:

CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)m_ListCtrl.GetHeaderCtrl();   
pHeaderCtrl->EnableWindow( FALSE ) ;



如果设置了LVS_EX_CHECKBOXES属性,则可以用 
  BOOL   GetCheck(   int   nItem   )   const; 
来得到某一行是否Checked。 

可以先用下面的语句来删除以前的东西: 
  for(int   k=2;k> =0;k--)   //注意要 从后往前删 ,否则出错 
    m_ListCtrl.DeleteColumn(k); 
  m_ListCtrl.DeleteAllItems(); 

用下面的语句新建列: 
  m_ListCtrl.InsertColumn(0,_T( "文件名 "),LVCFMT_IMAGE|LVCFMT_LEFT); 
  m_ListCtrl.InsertColumn(1,_T( "仪器类别 ")); 
  m_ListCtrl.InsertColumn(2,_T( "项目类别 ")); 
  
其中LVCFMT_IMAGE表示可以 在第一列加入图标 。如果不要图标可以删去。 

然后设置列宽: 
  for(j=0;j <3;j++) 
    m_ListCtrl.SetColumnWidth(j   ,100); 
  
以下为列表加入图标,如果不需要图标,可以跳过这一步。注意只在第一次加入,如果多次加入会出错! 
先在头文件中加入声明: 
  CImageList   m_ImageList; 
这是必要的,如果在cpp的某个函数中加入由于生命期结束,CImageList自动释放,则效果是列表中看不到图标,只看到一个白方块。 
下面生成CImageList,并将其绑定到CListCtrl中,这是CImageList中还没有图标,只是一个容器: 
  static   int   flag=2; 
  if(flag==2){//只调用一次SetImageList,否则出错 
    m_ImageList.Create(128,   128,   ILC_COLORDDB|ILC_MASK,   20,   1);   
    m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL); 
  } 
  flag=(flag+1)%2; 
如果CListCtrl已经用过,曾经加过图标进去,这时就要删除上次放进m_ImageList中的Image 
  for(int   kk=0;kk <m_ImageList.GetImageCount();kk++) 
    m_ImageList.Remove(k); 
  
下面介绍如何向CListCtrl里面加入行,并同时为每一行动态加入图标: 
假设m_listRowCount为要加入的行数。 
  CBitmap*   bitmap; 
  bitmap=new   CBitmap[m_list1rowCount]; 
  HBITMAP   hbitmap;   
  
  for(int   i   =   0;   i   <   m_listRowCount;   i++) 
  { 
    //为每一行插入相应的缩略图 
    CFile   f; 
    CFileException   e;     
    if(   !f.Open(m_FileName,   CFile::modeRead,   &e   )){   //m_FileName为bmp文件名,由你来定 
      hbitmap   =   (HBITMAP)LoadImage(NULL,path+ "blank.bmp ",IMAGE_BITMAP,0,0, 
        LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE); 
    }else{ 
      f.Close(); 
      hbitmap   =   (HBITMAP)LoadImage(NULL,bmpFile,IMAGE_BITMAP,0,0, 
        LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE); 
    } 
    bitmap[i].Attach(hbitmap); 
    m_ImageList.Add(&bitmap[i],   RGB(0,   128,   128)); 
    
    //插入行 
    m_ListCtrl.InsertItem(i,m_FileName,i); 
    m_ListCtrl.SetItemText(i,1,type); 
    m_ListCtrl.SetItemText(i,2,m_Path); 
  } 
    
  //记得删除已经没用的临时文件 
  if(m_list1rowCount!=0) 
    delete[]   bitmap; 

2。如果是ICON类型的CListCtrl,则要做一点点改动: 
把绑定图标集的代码由 
  SetImageList(&m_ImageList,LVSIL_SMALL); 
改为 
  SetImageList(&m_ImageList,LVSIL_NORMAL); 

插入行时只用 
  InsertItem(i,mainSet.m_FileName,i); 
不用 
  SetItemText(i,1,type); 

之类的代码。 


3.其他技巧

CListCtrl支持列拖动及排序:

 m_ListCtrl.SetExtendedStyle(LVS_EX_HEADERDRAGDROP);
即可实现拖动,排序有开源的CSortListCtrl可以使用。

其它常用:

  dwStyle |= LVS_EX_FULLROWSELECT;      //整行选中,REPORT风格下
 dwStyle |= LVS_EX_CHECKBOXES ;       //前边带复选框
 dwStyle |= LVS_EX_GRIDLINES;           //带网格线

dwStyle |= LVS_EX_HEADERDRAGDROP;  //标题栏可以交换顺序  
 m_ListCtrl.SetExtendedStyle(dwStyle);

 

 //重写此函数 禁用标题栏拖动列宽

BOOL CSortListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam; 
switch   (((NMHDR*)lParam)->code) 
case   HDN_BEGINTRACKW: 
case   HDN_BEGINTRACKA: 
//if (pHDN->iItem == 0)   // 指定哪一列
{
*pResult = TRUE;      //disable   tracking 
return TRUE;          //Processed   message 
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}


另一篇:

(一)列表控制的主要功能

列表控制和视(List Control&View)主要用来以各种方式显示一组数据记录供用户进行各种操作,Windows98/95中资源管理器中的“查看”标签下的“大图标|小图标|列表|详细资源”就是一个非常好的典型应用。列表中的记录可以包括多个数据项,也可以包括表示数据内容的大小图标,用来表示数据记录的各种属性。

列表控制提供了对Windows列表功能操作的基本方法,而使用列表视的视函数可以对列表视进行各种操作,通过调用视成员GetListCtrl获取嵌在列表视内列表控制的引用(GetListCtrl& ctrlList = GetListCtrl()),就可以和列表控制一样进行各种操作。

操作一个列表控制和视的基本方法为:

创建列表控制;

创建列表控制所需要的图像列表;

向列表控制添加表列和表项;

对列表进行各种控制,主要包括查找、排序、删除、显示方式、排列方式以及各种消息处理功能等;

最后撤消列表控制。


对于一个列表控制,其最典型最常用的显示控制方式为:大图标方式(LVS_ICON)、小图标方式(LVS_SMALLICON)、列表显示方式(LVS_LIST)和详细资料(即报告LVS_REPORT)显示方式。这可以通过设置其显示方式属性来实现。要控制列表所在窗口的风格,可通过功能函数GetWindowLong和SetWindowLong来实现,要控制列表图标的对齐方式,可通过设置列表窗口的风格LVS_ALIGNTOP或LVS_ALIGNLEFT来实现,


(二)列表控制的对象结构

1、列表控制的建立方法

CListCtrl&listCtrl 定义列表对象的结构

Create 建立列表控制并绑定对象

列表控制CListCtrl::Create的调用格式如下:

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

其中参数dwStyle用来确定列表控制的风格;rect用来确定列表控制的大小和位置;pParentWnd用来确定列表控制的父窗口,通常是一个对话框;nID用来确定列表控制的标识。其中列表控制的风格可以是下列值的组合:

LVS_ALIGNLEFT 用来确定表项的大小图标以左对齐方式显示;

LVS_ALIGNTOP 用来确定表项的大小图标以顶对齐方式显示;

LVS_AUTOARRANGE 用来确定表项的大小图标以自动排列方式显示;

LVS_EDITLABELS 设置表项文本可以编辑,父窗口必须设有LVN_ENDLABELEDIT风格;

LVS_ICON 用来确定大图标的显示方式;

LVS_LIST 用来确定列表方式显示;

LVS_NOCOLUMNHEADER 用来确定在详细资料方式时不显示列表头;

LVS_NOLABELWRAP 用来确定以单行方式显示图标的文本项;

LVS_NOSCROLL 用来屏蔽滚动条;

LVS_NOSORTHEADER 用来确定列表头不能用作按钮功能;

LVS_OWNERDRAWFIXED 在详细列表方式时允许自绘窗口;

LVS_REPORT 用来确定以详细资料即报告方式显示;

LVS_SHAREIMAGELISTS用来确定共享图像列表方式;

LVS_SHOWSELALWAYS 用来确定一直显示被选中表项方式;

LVS_SINGLESEL 用来确定在某一时刻只能有一项被选中;

LVS_SMALLICON 用来确定小图标显示方式;

LVS_SORTASCENDING 用来确定表项排序时是基于表项文本的升序方式;

LVS_SORTDESCENDING 用来确定表项排序时是基于表项文本的降序方式;

2、列表控制的属性类

列表控制的属性类包括取得列表控制的背景色GetBkColor、设置列表控制的背景色SetBkColor、取得列表控制的图像列表GetImageList、设置列表控制的图像列表SetImageList、取得列表项数目GetItemCount、取得列表控制的属性GetItem、取得与表项相关的数据GetItemData、设置表项的属性SetItem、设置与表项相关的数值SetItemData、取得相关联的下一个表项GetNextItem、设置列表控制的文本颜色SetTextColor、取得列表控制的文本背景颜色GetTextBkColor、设置表项的最大数目SetItemCount和取得被选中表项的数目GetSelectedCount等。

3、列表控制的操作方法

列表控制的操作方法包括插入一个新的表项InsertItem、删除一个表项DeleteItem、排序表项SortItems、测试列表的位置HitTest、重绘表项RedrawItems、插入一个表列InsertColumn、删除一个表列DeleteColumn、编辑一个表项文本EditLabel和重绘一个表项DrawItem等。


(三)列表控制的数据结构

列表控制中包含两个非常重要的数据结构LV_ITEM和LV_COLUMN。LV_ITEM用于定义列表控制的一个表项,LV_COLUMN用于定义列表控制的一个表列,其定义格式分别为:

typedef struct _LV_ITEM {

UINT mask; //结构成员屏蔽位

int iItem; //表项索引号

int iSubItem; //子表项索引号

UINT state; //表项状态

UINT stateMask; //状态有效性屏蔽位

LPTSTR pszText; //表项名文本

int cchTextMax; //表项名最大长度

int iImage; // 表项图标的索引号

LPARAM lParam; // 与表项相关的32位数

} LV_ITEM;

typedef struct _LV_COLUMN {

UINT mask; //结构成员有效性屏蔽位

int fmt; //表列对齐方式

int cx; //表列的象素宽度

LPTSTR pszText; //表列的表头名

int cchTextMax; //表列名的文本长度

int iSubItem; //与表列关联的子表项索引号

} LV_COLUMN;

其中fmt可以取如下值:

LVCFMT_CENTER 表列居中对齐

LVCFMT_LEFT 表列左对齐


(四)列表控制的应用技巧示例

本文给出具体实例演示列表控制及前面的表头控制和图像列表的应用技巧。步骤如下:

1、通过“FILE->NEW->PROJECTS->MFC AppWizard(EXE)”建立名为VCLIST的工程,在建立过程中选择基于对话框(Dialog based)的应用;将对话框中的默认控件删除,并将所有对话框属性中的Language域设置为Chinese(P.R.C.),以使应用程序支持中文;

  1. 建立两个图标IDI_GJ和IDI_XS,用来表示图标的选中和非选中状态,对于每个图标都应建立32X32和16X16两种大小,以保证程序的需要;

3、在对话框窗口中设计组合框(Group Box),组合框中设置四个无线按钮(Radio)“大图标|小图标|列表|资料”,同时设置排序、删除和关闭三个控制按钮(Button),并在对话框中设置大小合适的列表控制(List Ctrl),其对应标识分别如下:


控制名称 标题名称 标识符号


列表控制 IDC_LISTCTRL

组合框 方式 IDC_STATIC

无线按钮 大图标 IDC_STDICON

小图标 IDC_SMLICON

列 表 IDC_LIST

资 料 IDC_REPORT

按钮 排 序 IDC_SORT

删 除 IDC_DEL

关 闭 IDOK


4、在设置无线按钮时,需要注意的是只有大图标的Group属性为选中状态,而其它无线按钮的状态均为默认值。

5、选中列表控制控件,选择“VIEW->ClassWizard->Memory Variables”,并利用IDC_ LISTCTRL引入成员变量,其变量类型为:

变量名 种类 变量类型

m_ListCtrl Control ClistCtrl

同时利用“MESSAGES MAP”为各无线按钮和命令按钮增加控制功能。

6、然后在包含文件和代码文件中分别加入如下代码:

(1)在VCLISTDlg.h中增加数据结构和定义

typedef struct tagSPS { //定义结构

char szPm[10]; //品名

int Lx; //0-GJ 1-XS

char szSl[10]; //数量

char szDj[10]; //单价

char szJe[10]; //金额

} SPS;

int CALLBACK CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort);

(2)在VCLISTDlg.CPP中的起始处增加初始化数据和程序定义

//在文件开始处增加数据结构初始化

SPS Sps[]={//信息

{"红梅",0,"1000","30","30000"},

{"黄梅",0,"1000","29","29000"},

{"绿梅",0,"1000","28","28000"},

{"青梅",0,"1000","27","27000"},

{"白梅",0,"1000","31","31000"},

{"红梅",1,"1000","30","30000"},

{"黄梅",1,"1000","29","29000"},

{"绿梅",1,"1000","28","28000"},

{"青梅",1,"1000","27","27000"},

{"白梅",1,"1000","31","31000"}};

CImageList Cil1,Cil2;//大小图像列表

(3)在程序初始化处增加表头、图像和列表控制建立代码

BOOL CVCLISTDlg::OnInitDialog()

{CDialog::OnInitDialog();

//......//其它代码

// TODO: Add extra initialization here此处增加代码

LV_ITEM lvitem;

LV_COLUMN lvcol;

int i,iPos,iItemNum;

CVCLISTApp *pApp=(CVCLISTApp *)AfxGetApp();//创建图象列表

Cil1.Create(32,32,TRUE,2,2);

Cil1.Add(pApp->LoadIcon(IDI_GJ));

Cil1.Add(pApp->LoadIcon(IDI_XS));

Cil2.Create(16,16,TRUE,2,2);

Cil2.Add(pApp->LoadIcon(IDI_GJ));

Cil2.Add(pApp->LoadIcon(IDI_XS));//设置图象列表

m_ListCtrl.SetImageList(&Cil1,LVSIL_NORMAL);

m_ListCtrl.SetImageList(&Cil2,LVSIL_SMALL);//向列表控制中添加表列

lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;

lvcol.fmt=LVCFMT_CENTER;//居中

i=0;

lvcol.pszText="品 名";

lvcol.iSubItem=i;

lvcol.cx=70;

m_ListCtrl.InsertColumn(i++,&lvcol);

lvcol.pszText="数 量";

lvcol.iSubItem=i;

lvcol.cx=70;

m_ListCtrl.InsertColumn(i++,&lvcol);

lvcol.pszText="单 价";

lvcol.iSubItem=i;

lvcol.cx=70;

m_ListCtrl.InsertColumn(i++,&lvcol);

lvcol.pszText="金 额";

lvcol.iSubItem=i;

lvcol.cx=70;

m_ListCtrl.InsertColumn(i++,&lvcol);

//向列表控制中添加表项

iItemNum=sizeof(Sps)/sizeof(SPS);

for(i=0;i<iItemNum;i++){

lvitem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;

lvitem.iItem=i;

lvitem.iSubItem=0;

lvitem.pszText=Sps[i].szPm;

lvitem.iImage=Sps[i].Lx;

lvitem.lParam=i;

iPos=m_ListCtrl.InsertItem(&lvitem);//返回表项插入后的索引号

lvitem.mask=LVIF_TEXT;

lvitem.iItem=iPos;

lvitem.iSubItem=1;

lvitem.pszText=Sps[i].szSl;

m_ListCtrl.SetItem(&lvitem);

lvitem.iSubItem=2;

lvitem.pszText=Sps[i].szDj;

m_ListCtrl.SetItem(&lvitem);

lvitem.iSubItem=3;

lvitem.pszText=Sps[i].szJe;

m_ListCtrl.SetItem(&lvitem);

}

CheckRadioButton(IDC_STDICON,IDC_REPORT,IDC_STDICON);

return TRUE; // return TRUE unless you set the focus to a control

}

(4)完善列表显示方式代码

在利用Classwizard类向导创建各功能按钮显示功能函数之后,必须依次完善这些功能函数的代码,这些功能函数如下:

void CVCLISTDlg::OnStdicon()//设置大图标显示方式

{ // TODO: Add your control notification handler code here

LONG lStyle;

lStyle=GetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE);//获取当前窗口类型

lStyle&=~LVS_TYPEMASK; //清除显示方式位

lStyle|=LVS_ICON; //设置显示方式

SetWindowLong(m_ListCtrl.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型

}

void CVCLISTDlg::OnSmlicon(

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
<div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;">当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 6300 多个 star,</span><span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。<br /> 商城项目所涉及的功能结构图整理如下:<br /> </span> </div> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> <img alt="modules" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3N0b3JlL25ld2JlZS1tYWxsLXMucG5n?x-oss-process=image/format,png" /> </p> </div> <p style="color:rgba(0,0,0,.75);"> <strong><span style="color:#e53333;">课程特色</span></strong> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目 </li> <li> 最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择 </li> <li> 实践项目页面美观且实用,交互效果完美 </li> <li> 教程详细开发教程详细完整、文档资源齐全 </li> <li> 代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜 </li> <li> 技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 </li> </ul> </div> <p style="color:rgba(0,0,0,.75);">   </p> <p style="color:rgba(0,0,0,.75);"> <span style="color:#e53333;">课程预览</span> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> 以下为商城项目的页面和功能展示,分别为: </p> </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 商城首页 1<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050347585499.gif" /> </li> <li> 商城首页 2<br /> <img alt="" src="https://img-bss.csdn.net/202005181054413605.png" /> </li> <li>   </li> <li> 购物车<br /> <img alt="cart" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvY2FydC5wbmc?x-oss-process=image/format,png" /> </li> <li> 订单结算<br /> <img alt="settle" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvc2V0dGxlLnBuZw?x-oss-process=image/format,png" /> </li> <li> 订单列表<br /> <img alt="orders" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvb3JkZXJzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 支付页面<br /> <img alt="" src="https://img-bss.csdn.net/201909280301493716.jpg" /> </li> <li> 后台管理系统登录页<br /> <img alt="login" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWxvZ2luLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品管理<br /> <img alt="goods" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWdvb2RzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品编辑<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050348242799.png" /> </li> </ul> </div> </div> </div> </div>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页