MFC, WTL中实现文件拖动功能:
1 新建一对话框工程。
2 在对话框的属性中将“Accept Files”一项勾选上。
3 添加消息,
在MFC中添加 ,ON_MESSAGE(WM_DROPFILES, OnDropFiles)
在WTL中添加,MSG_WM_DROPFILES(OnDropFiles)
4 写OnDropFiles(HDROP hDropInfo)方法
void OnDropFiles(HDROP hDropInfo)
{
unsigned int cFile = 0, i = 0;
CHAR szFileNname[MAX_PATH] = {'/0'};
cFile = ::DragQueryFile( hDropInfo, 0xFFFFFFFF, NULL, MAX_PATH );
for(i = 0; i < cFile; i++)
{
DWORD fileAttrib = 0x0;
::DragQueryFile( hDropInfo, i, szFileNname, MAX_PATH );
bCanExit = FALSE;
fileAttrib = GetFileAttributes(szFileNname);
if (0x10 == (fileAttrib & FILE_ATTRIBUTE_DIRECTORY))
{
//拖来的为文件夹
......
}
else
{
//拖来的为文件
......
}
}
}
1 新建一对话框工程。
2 在对话框的属性中将“Accept Files”一项勾选上。
3 添加消息,
在MFC中添加 ,ON_MESSAGE(WM_DROPFILES, OnDropFiles)
在WTL中添加,MSG_WM_DROPFILES(OnDropFiles)
4 写OnDropFiles(HDROP hDropInfo)方法
void OnDropFiles(HDROP hDropInfo)
{
unsigned int cFile = 0, i = 0;
CHAR szFileNname[MAX_PATH] = {'/0'};
cFile = ::DragQueryFile( hDropInfo, 0xFFFFFFFF, NULL, MAX_PATH );
for(i = 0; i < cFile; i++)
{
DWORD fileAttrib = 0x0;
::DragQueryFile( hDropInfo, i, szFileNname, MAX_PATH );
bCanExit = FALSE;
fileAttrib = GetFileAttributes(szFileNname);
if (0x10 == (fileAttrib & FILE_ATTRIBUTE_DIRECTORY))
{
//拖来的为文件夹
......
}
else
{
//拖来的为文件
......
}
}
}
本文介绍如何在MFC与WTL应用程序中实现文件拖放功能。通过设置对话框属性、添加消息响应器及编写处理函数,使应用程序能够接收并处理用户拖放的文件或文件夹。
968

被折叠的 条评论
为什么被折叠?



