1 个解决方案
#1
发展缩略图ListView控件,请参阅以下部分为一步一步的操作。创建ListImage项目创建一个新项目,使用VC - 的MFC AppWizard(EXE)。。选择在向导对话框的选项 - 第1步。完成该向导。
现在,新的项目中的类添加到工作区(你可以看到从项目工作区树的FileView选项卡类文件。创建缩略图ListImage类转到ClassView选项卡,选择项目名称,就可以通过点击鼠标右键添加一个新的MFC类。作为该基类选择的CListCtrl。现在,在项目工作区,将创建新的类。如何绑定到ListControl的类?从ResourceView中选择对话的形式。从形式对话框中点击鼠标右键,从弹出菜单中选择类向导。现在去会员变截面选择ListControl的控制清单。按Add Variable按钮添加ListControl的变量。选择新创建的类的名称中添加成员变量的形式(ClistImageCtrl或UR类的名称)的变量的类型。启用列表控件拖放文件??/ H3>从ResourceView中选择对话的形式。打开列表控件的属性窗口。在该检查"接受文件??从扩展样式检查框。获取从资源管理器中删除的文件从ClassView中选择ListImage类。打开那个类的向导。添加WM_DROPFILES消息的功能。OnDropFiles()函数将被自动添加到类中。void CListImageCtrl::OnDropFiles(HDROP hDropInfo)
{
WORD wNumFilesDropped = DragQueryFile(hDropInfo, -1, NULL, 0);
CString firstFile="";
CFile Cf;
DWORD TmpVal;
char szText[MAX_PATH];
int kk=0;
int tTot=(int)wNumFilesDropped;
int m_TotCount;
for (WORD x = 0 ; x < wNumFilesDropped; x++)
{
kk++;
// Get the number of bytes required by the file's full pathname
WORD wPathnameSize = DragQueryFile(hDropInfo, x, NULL, 0);
// Allocate memory to contain full pathname & zero byte
char * npszFile = (char *) LocalAlloc(LPTR, wPathnameSize += 1);
// If not enough memory, skip this one
if (npszFile == NULL) continue;
DragQueryFile(hDropInfo, x, npszFile, wPathnameSize);
if (firstFile=="")
firstFile=npszFile;
CString nFileText;
CString nPath;
CString pItemText=npszFile;
CFile Cf;
int i=pItemText.ReverseFind('\\');
nFileText=pItemText.Mid(i+1);
nPath=pItemText.Left(i+1);
i=nFileText.Find("%");
if (i==-1)
{
i=pItemText.Find(_T(".jpg"),0);
if (i==-1)
i=pItemText.Find(_T(".jpeg"),0);
if (i==-1)
i=pItemText.Find(_T(".JPG"),0);
if (i==-1)
i=pItemText.Find(_T(".JPEG"),0);
if (i!=-1)
{
m_TotCount=GetItemCount();
InsertItem(m_TotCount,nFileText,0);
SetItemText(m_TotCount, 1, nPath);
//Get File size
DoEvents();
if (Cf.Open(pItemText,0,0)==TRUE)
{
TmpVal = Cf.GetLength();
wsprintf(szText, "%lu", TmpVal);
if (TmpVal>1024)
{
double kTmpVal=TmpVal;
double kdvTmp=kTmpVal/1024;
TmpVal=TmpVal/1024;
if (TmpVal>1024)
{
double dTmpVal=TmpVal;
double dvTmp=dTmpVal/1024;
CString szT=
ConvertDoubleToString(dvTmp) + _T(" MB");
wsprintf(szText, "%s", szT);
}
else
{
CString kszT=
ConvertDoubleToString(kdvTmp) + _T(" KB");
wsprintf(szText, "%s", kszT);
}
}
else
wsprintf(szText, "%lu BYTES", TmpVal);
SetItemText(m_TotCount, 2, szText);
}
Cf.Close();
HBITMAP bitm=LoadPicture(pItemText);
if (bitm!=NULL)
{
CBitmap* pImage = NULL;
pImage = new CBitmap();
pImage->Attach(bitm);
int imgP=m_imageList.Add(pImage,RGB(0,0,0));
SetItem(m_TotCount, 0, LVIF_IMAGE, NULL, imgP,0, 0, 0);
}
}
}
// clean up
LocalFree(npszFile);
}
// Free the memory block containing the dropped-file information
DragFinish(hDropInfo);
// if this was a shortcut, we need to expand it to the target path
int result=GetItemCount();
SetItemState(result, LVIS_SELECTED |
LVIS_FOCUSED | LVIS_ACTIVATING,
LVIS_SELECTED | LVIS_FOCUSED | LVIS_ACTIVATING);
//m_ProgList.SetActiveItem(k);
//m_ProgList.SetFocus();
result--;
EnsureVisible(result, TRUE);
SetFocus();
SetRedraw(TRUE);
RedrawWindow(NULL,NULL);
CListCtrl::OnDropFiles(hDropInfo);
}
创建图片文件的缩略图形象LoadPicture函数添加到ListImage类。
现在,新的项目中的类添加到工作区(你可以看到从项目工作区树的FileView选项卡类文件。创建缩略图ListImage类转到ClassView选项卡,选择项目名称,就可以通过点击鼠标右键添加一个新的MFC类。作为该基类选择的CListCtrl。现在,在项目工作区,将创建新的类。如何绑定到ListControl的类?从ResourceView中选择对话的形式。从形式对话框中点击鼠标右键,从弹出菜单中选择类向导。现在去会员变截面选择ListControl的控制清单。按Add Variable按钮添加ListControl的变量。选择新创建的类的名称中添加成员变量的形式(ClistImageCtrl或UR类的名称)的变量的类型。启用列表控件拖放文件??/ H3>从ResourceView中选择对话的形式。打开列表控件的属性窗口。在该检查"接受文件??从扩展样式检查框。获取从资源管理器中删除的文件从ClassView中选择ListImage类。打开那个类的向导。添加WM_DROPFILES消息的功能。OnDropFiles()函数将被自动添加到类中。void CListImageCtrl::OnDropFiles(HDROP hDropInfo)
{
WORD wNumFilesDropped = DragQueryFile(hDropInfo, -1, NULL, 0);
CString firstFile="";
CFile Cf;
DWORD TmpVal;
char szText[MAX_PATH];
int kk=0;
int tTot=(int)wNumFilesDropped;
int m_TotCount;
for (WORD x = 0 ; x < wNumFilesDropped; x++)
{
kk++;
// Get the number of bytes required by the file's full pathname
WORD wPathnameSize = DragQueryFile(hDropInfo, x, NULL, 0);
// Allocate memory to contain full pathname & zero byte
char * npszFile = (char *) LocalAlloc(LPTR, wPathnameSize += 1);
// If not enough memory, skip this one
if (npszFile == NULL) continue;
DragQueryFile(hDropInfo, x, npszFile, wPathnameSize);
if (firstFile=="")
firstFile=npszFile;
CString nFileText;
CString nPath;
CString pItemText=npszFile;
CFile Cf;
int i=pItemText.ReverseFind('\\');
nFileText=pItemText.Mid(i+1);
nPath=pItemText.Left(i+1);
i=nFileText.Find("%");
if (i==-1)
{
i=pItemText.Find(_T(".jpg"),0);
if (i==-1)
i=pItemText.Find(_T(".jpeg"),0);
if (i==-1)
i=pItemText.Find(_T(".JPG"),0);
if (i==-1)
i=pItemText.Find(_T(".JPEG"),0);
if (i!=-1)
{
m_TotCount=GetItemCount();
InsertItem(m_TotCount,nFileText,0);
SetItemText(m_TotCount, 1, nPath);
//Get File size
DoEvents();
if (Cf.Open(pItemText,0,0)==TRUE)
{
TmpVal = Cf.GetLength();
wsprintf(szText, "%lu", TmpVal);
if (TmpVal>1024)
{
double kTmpVal=TmpVal;
double kdvTmp=kTmpVal/1024;
TmpVal=TmpVal/1024;
if (TmpVal>1024)
{
double dTmpVal=TmpVal;
double dvTmp=dTmpVal/1024;
CString szT=
ConvertDoubleToString(dvTmp) + _T(" MB");
wsprintf(szText, "%s", szT);
}
else
{
CString kszT=
ConvertDoubleToString(kdvTmp) + _T(" KB");
wsprintf(szText, "%s", kszT);
}
}
else
wsprintf(szText, "%lu BYTES", TmpVal);
SetItemText(m_TotCount, 2, szText);
}
Cf.Close();
HBITMAP bitm=LoadPicture(pItemText);
if (bitm!=NULL)
{
CBitmap* pImage = NULL;
pImage = new CBitmap();
pImage->Attach(bitm);
int imgP=m_imageList.Add(pImage,RGB(0,0,0));
SetItem(m_TotCount, 0, LVIF_IMAGE, NULL, imgP,0, 0, 0);
}
}
}
// clean up
LocalFree(npszFile);
}
// Free the memory block containing the dropped-file information
DragFinish(hDropInfo);
// if this was a shortcut, we need to expand it to the target path
int result=GetItemCount();
SetItemState(result, LVIS_SELECTED |
LVIS_FOCUSED | LVIS_ACTIVATING,
LVIS_SELECTED | LVIS_FOCUSED | LVIS_ACTIVATING);
//m_ProgList.SetActiveItem(k);
//m_ProgList.SetFocus();
result--;
EnsureVisible(result, TRUE);
SetFocus();
SetRedraw(TRUE);
RedrawWindow(NULL,NULL);
CListCtrl::OnDropFiles(hDropInfo);
}
创建图片文件的缩略图形象LoadPicture函数添加到ListImage类。
#1
发展缩略图ListView控件,请参阅以下部分为一步一步的操作。创建ListImage项目创建一个新项目,使用VC - 的MFC AppWizard(EXE)。。选择在向导对话框的选项 - 第1步。完成该向导。
现在,新的项目中的类添加到工作区(你可以看到从项目工作区树的FileView选项卡类文件。创建缩略图ListImage类转到ClassView选项卡,选择项目名称,就可以通过点击鼠标右键添加一个新的MFC类。作为该基类选择的CListCtrl。现在,在项目工作区,将创建新的类。如何绑定到ListControl的类?从ResourceView中选择对话的形式。从形式对话框中点击鼠标右键,从弹出菜单中选择类向导。现在去会员变截面选择ListControl的控制清单。按Add Variable按钮添加ListControl的变量。选择新创建的类的名称中添加成员变量的形式(ClistImageCtrl或UR类的名称)的变量的类型。启用列表控件拖放文件??/ H3>从ResourceView中选择对话的形式。打开列表控件的属性窗口。在该检查"接受文件??从扩展样式检查框。获取从资源管理器中删除的文件从ClassView中选择ListImage类。打开那个类的向导。添加WM_DROPFILES消息的功能。OnDropFiles()函数将被自动添加到类中。void CListImageCtrl::OnDropFiles(HDROP hDropInfo)
{
WORD wNumFilesDropped = DragQueryFile(hDropInfo, -1, NULL, 0);
CString firstFile="";
CFile Cf;
DWORD TmpVal;
char szText[MAX_PATH];
int kk=0;
int tTot=(int)wNumFilesDropped;
int m_TotCount;
for (WORD x = 0 ; x < wNumFilesDropped; x++)
{
kk++;
// Get the number of bytes required by the file's full pathname
WORD wPathnameSize = DragQueryFile(hDropInfo, x, NULL, 0);
// Allocate memory to contain full pathname & zero byte
char * npszFile = (char *) LocalAlloc(LPTR, wPathnameSize += 1);
// If not enough memory, skip this one
if (npszFile == NULL) continue;
DragQueryFile(hDropInfo, x, npszFile, wPathnameSize);
if (firstFile=="")
firstFile=npszFile;
CString nFileText;
CString nPath;
CString pItemText=npszFile;
CFile Cf;
int i=pItemText.ReverseFind('\\');
nFileText=pItemText.Mid(i+1);
nPath=pItemText.Left(i+1);
i=nFileText.Find("%");
if (i==-1)
{
i=pItemText.Find(_T(".jpg"),0);
if (i==-1)
i=pItemText.Find(_T(".jpeg"),0);
if (i==-1)
i=pItemText.Find(_T(".JPG"),0);
if (i==-1)
i=pItemText.Find(_T(".JPEG"),0);
if (i!=-1)
{
m_TotCount=GetItemCount();
InsertItem(m_TotCount,nFileText,0);
SetItemText(m_TotCount, 1, nPath);
//Get File size
DoEvents();
if (Cf.Open(pItemText,0,0)==TRUE)
{
TmpVal = Cf.GetLength();
wsprintf(szText, "%lu", TmpVal);
if (TmpVal>1024)
{
double kTmpVal=TmpVal;
double kdvTmp=kTmpVal/1024;
TmpVal=TmpVal/1024;
if (TmpVal>1024)
{
double dTmpVal=TmpVal;
double dvTmp=dTmpVal/1024;
CString szT=
ConvertDoubleToString(dvTmp) + _T(" MB");
wsprintf(szText, "%s", szT);
}
else
{
CString kszT=
ConvertDoubleToString(kdvTmp) + _T(" KB");
wsprintf(szText, "%s", kszT);
}
}
else
wsprintf(szText, "%lu BYTES", TmpVal);
SetItemText(m_TotCount, 2, szText);
}
Cf.Close();
HBITMAP bitm=LoadPicture(pItemText);
if (bitm!=NULL)
{
CBitmap* pImage = NULL;
pImage = new CBitmap();
pImage->Attach(bitm);
int imgP=m_imageList.Add(pImage,RGB(0,0,0));
SetItem(m_TotCount, 0, LVIF_IMAGE, NULL, imgP,0, 0, 0);
}
}
}
// clean up
LocalFree(npszFile);
}
// Free the memory block containing the dropped-file information
DragFinish(hDropInfo);
// if this was a shortcut, we need to expand it to the target path
int result=GetItemCount();
SetItemState(result, LVIS_SELECTED |
LVIS_FOCUSED | LVIS_ACTIVATING,
LVIS_SELECTED | LVIS_FOCUSED | LVIS_ACTIVATING);
//m_ProgList.SetActiveItem(k);
//m_ProgList.SetFocus();
result--;
EnsureVisible(result, TRUE);
SetFocus();
SetRedraw(TRUE);
RedrawWindow(NULL,NULL);
CListCtrl::OnDropFiles(hDropInfo);
}
创建图片文件的缩略图形象LoadPicture函数添加到ListImage类。
现在,新的项目中的类添加到工作区(你可以看到从项目工作区树的FileView选项卡类文件。创建缩略图ListImage类转到ClassView选项卡,选择项目名称,就可以通过点击鼠标右键添加一个新的MFC类。作为该基类选择的CListCtrl。现在,在项目工作区,将创建新的类。如何绑定到ListControl的类?从ResourceView中选择对话的形式。从形式对话框中点击鼠标右键,从弹出菜单中选择类向导。现在去会员变截面选择ListControl的控制清单。按Add Variable按钮添加ListControl的变量。选择新创建的类的名称中添加成员变量的形式(ClistImageCtrl或UR类的名称)的变量的类型。启用列表控件拖放文件??/ H3>从ResourceView中选择对话的形式。打开列表控件的属性窗口。在该检查"接受文件??从扩展样式检查框。获取从资源管理器中删除的文件从ClassView中选择ListImage类。打开那个类的向导。添加WM_DROPFILES消息的功能。OnDropFiles()函数将被自动添加到类中。void CListImageCtrl::OnDropFiles(HDROP hDropInfo)
{
WORD wNumFilesDropped = DragQueryFile(hDropInfo, -1, NULL, 0);
CString firstFile="";
CFile Cf;
DWORD TmpVal;
char szText[MAX_PATH];
int kk=0;
int tTot=(int)wNumFilesDropped;
int m_TotCount;
for (WORD x = 0 ; x < wNumFilesDropped; x++)
{
kk++;
// Get the number of bytes required by the file's full pathname
WORD wPathnameSize = DragQueryFile(hDropInfo, x, NULL, 0);
// Allocate memory to contain full pathname & zero byte
char * npszFile = (char *) LocalAlloc(LPTR, wPathnameSize += 1);
// If not enough memory, skip this one
if (npszFile == NULL) continue;
DragQueryFile(hDropInfo, x, npszFile, wPathnameSize);
if (firstFile=="")
firstFile=npszFile;
CString nFileText;
CString nPath;
CString pItemText=npszFile;
CFile Cf;
int i=pItemText.ReverseFind('\\');
nFileText=pItemText.Mid(i+1);
nPath=pItemText.Left(i+1);
i=nFileText.Find("%");
if (i==-1)
{
i=pItemText.Find(_T(".jpg"),0);
if (i==-1)
i=pItemText.Find(_T(".jpeg"),0);
if (i==-1)
i=pItemText.Find(_T(".JPG"),0);
if (i==-1)
i=pItemText.Find(_T(".JPEG"),0);
if (i!=-1)
{
m_TotCount=GetItemCount();
InsertItem(m_TotCount,nFileText,0);
SetItemText(m_TotCount, 1, nPath);
//Get File size
DoEvents();
if (Cf.Open(pItemText,0,0)==TRUE)
{
TmpVal = Cf.GetLength();
wsprintf(szText, "%lu", TmpVal);
if (TmpVal>1024)
{
double kTmpVal=TmpVal;
double kdvTmp=kTmpVal/1024;
TmpVal=TmpVal/1024;
if (TmpVal>1024)
{
double dTmpVal=TmpVal;
double dvTmp=dTmpVal/1024;
CString szT=
ConvertDoubleToString(dvTmp) + _T(" MB");
wsprintf(szText, "%s", szT);
}
else
{
CString kszT=
ConvertDoubleToString(kdvTmp) + _T(" KB");
wsprintf(szText, "%s", kszT);
}
}
else
wsprintf(szText, "%lu BYTES", TmpVal);
SetItemText(m_TotCount, 2, szText);
}
Cf.Close();
HBITMAP bitm=LoadPicture(pItemText);
if (bitm!=NULL)
{
CBitmap* pImage = NULL;
pImage = new CBitmap();
pImage->Attach(bitm);
int imgP=m_imageList.Add(pImage,RGB(0,0,0));
SetItem(m_TotCount, 0, LVIF_IMAGE, NULL, imgP,0, 0, 0);
}
}
}
// clean up
LocalFree(npszFile);
}
// Free the memory block containing the dropped-file information
DragFinish(hDropInfo);
// if this was a shortcut, we need to expand it to the target path
int result=GetItemCount();
SetItemState(result, LVIS_SELECTED |
LVIS_FOCUSED | LVIS_ACTIVATING,
LVIS_SELECTED | LVIS_FOCUSED | LVIS_ACTIVATING);
//m_ProgList.SetActiveItem(k);
//m_ProgList.SetFocus();
result--;
EnsureVisible(result, TRUE);
SetFocus();
SetRedraw(TRUE);
RedrawWindow(NULL,NULL);
CListCtrl::OnDropFiles(hDropInfo);
}
创建图片文件的缩略图形象LoadPicture函数添加到ListImage类。