MFC图片控件(Picture、List Contrl)

MFC图片控件Picture Control使用几个实例

1、按钮选择图片显示到控件上

  为方便说明,本例子用PictureTest创建一个对话框,类名CPictureTestDlg,在CPictureTestDlg.h文件中申明CImage image;CString strFilePath;CString strFileName;再从工具箱中托一个Picture控件到对话框中,ID为IDC_STATIC,调整适当大小后再添加一个添加图片的按钮。如下图所示:

     

为按钮添加事件处理程序代码:

 1 void CPictureTestDlg::OnBnClickedButton1()
 2 {
 3     // TODO: 在此添加控件通知处理程序代码
 4     //选择图片
 5     CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("imageFiles(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
 6     fileDlg.DoModal();
 7     //获取图片路径和图片名称
 8     strFilePath = fileDlg.GetPathName();
 9     strFileName = fileDlg.GetFileName();
10     //判断路径不为空
11     if (strFilePath == _T(""))
12     {
13         return;
14     }
15     image.Load(strFilePath);
16     //以下两个矩形主要作用是,获取对话框上面的Picture Control的width和height,
17     //并设置到图片矩形rectPicture,根据图片矩形rectPicture对图片进行处理,
18     //最后绘制图片到对话框上Picture Control上面
19     CRect rectControl;                        //控件矩形对象
20     CRect rectPicture;                        //图片矩形对象
21     int x = image.GetWidth();
22     int y = image.GetHeight();
23     //Picture Control的ID为IDC_IMAGE
24     CWnd* pWnd = GetDlgItem(IDC_STATIC);
25     pWnd->GetClientRect(rectControl);
26     CDC* pDc = GetDlgItem(IDC_STATIC)->GetDC();
27     SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);
28     rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));
29     ((CStatic*)GetDlgItem(IDC_STATIC))->SetBitmap(NULL);
30     //以下两种方法都可绘制图片
31     //image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //将图片绘制到Picture控件表示的矩形区域
32     image.Draw(pDc->m_hDC, rectPicture);                //将图片绘制到Picture控件表示的矩形区域
33     image.Destroy();
34     pWnd->ReleaseDC(pDc);
35 }
View Code

 运行效果:

    

2、List Control控件显示文件列表

  从工具箱中拖拽一个ListCtrl控件到对话框中,添加变量为CListCtrl pListCtrl;

 1 BOOL CListControlDlg::OnInitDialog()
 2 {
 3     // TODO: 在此添加额外的初始化代码
 4     pListCtrl.DeleteAllItems();
 5     pListCtrl.InsertColumn(0, _T("文件名"), LVCFMT_CENTER, 120);
 6     pListCtrl.InsertColumn(1, _T("文件类型"), LVCFMT_CENTER, 100);
 7     pListCtrl.InsertColumn(2, _T("文件大小"), LVCFMT_CENTER, 100);
 8     pListCtrl.InsertColumn(3, _T("存放路径"), LVCFMT_LEFT, 500);
 9     //DWORD dwStyle = pListCtrl.GetExtendedStyle(); //获取当前扩展样式
10     //dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(report风格时)
11     //dwStyle |= LVS_EX_GRIDLINES; //网格线(report风格时)
12     pListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); //设置扩展风格 LVS_EX_CHECKBOXES
13     pListCtrl.DeleteAllItems();
14     CFileFind finder;
15     //建立CString对象,设置检索匹配字符串
16     CString strWildcard(_T("C:\Users\Administrator\Desktop\imageFile"));
17     strWildcard += _T("\*.*");
18     //文件内部检索
19     BOOL bWorking = finder.FindFile(strWildcard);
20     int i; //用于定位字符,作为下标
21     int index = 0;    //用于列表索引
22     CString fontName, lastType, filepath, filename, filesize;//存储切割结果
23     while (bWorking)
24     {
25         bWorking = finder.FindNextFile();
26         filename = finder.GetFileName();
27         //假设文件夹里面全是图片,获取图片文件长度
28         int imageSize = finder.GetLength();
29         if (filename != _T(".") && filename != _T(".."))
30         {
31             filepath = finder.GetFilePath();
32             for (i = 0;i < filename.GetLength();i++)
33             {
34                 if (filename[i] == '.')
35                 {
36                     fontName = filename.Mid(0, i);
37                     lastType = filename.Mid(i + 1, filename.GetLength());
38                     filesize.Format(_T("%d"), imageSize / 1024);
39                     filesize += "k";
40                     pListCtrl.InsertItem(index, fontName);
41                     pListCtrl.SetItemText(index, 1, lastType);
42                     pListCtrl.SetItemText(index, 2, filesize);
43                     pListCtrl.SetItemText(index, 3, filepath);
44                 }
45             }
46             index++;
47         }
48     }
49     finder.Close();
50     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
51 }
ListCtrl

运行效果:

原文地址:https://www.cnblogs.com/geziyu/p/14084550.html