VC文件拖拽

描述:类似qq使用中的文件拖拽到聊天,实现传输文件

1、C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winuser.h 文件中要有

#define WM_DROPFILES                    0x0233

2、窗口属性中Accept Files要为true。

3、消息映射和响应

ON_WM_DROPFILES()

afx_msg void OnDropFiles(HDROP hDropInfo);

void ChatWithPerson::OnDropFiles(HDROP hDropInfo)
{

//文件的个数
UINT nNumOfFiles = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); 
if (0 == nNumOfFiles)
{
return;
}
TCHAR cFilePathName[_MAX_PATH] = {0};
int isFileNum(0);
for ( UINT nIndex=0 ; nIndex< nNumOfFiles; ++nIndex )
{
DragQueryFile(hDropInfo, nIndex, cFilePathName, _MAX_PATH); //得到文件名

if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(cFilePathName))
{// 如果是文件夹
if (nNumOfFiles - 1 == nIndex)
{
CPublicFuncManage obj;
obj.ShowMessageBox(_T("不能传送文件夹!\r\n"),BLMsgBox::ERROR_NULL,this);
return;
}
continue;
}
// 以独占方式打开, 如果被占用, 打开失败
HANDLE hFile = CreateFile(cFilePathName, GENERIC_READ, 
0, 
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if (INVALID_HANDLE_VALUE == hFile)
{
DisplayPromptMsg(_T("该文件正在使用中,不能传送!\r\n"));
continue;
}
CloseHandle(hFile);
// 以独占方式打开, 如果被占用, 打开失败, END
}
DragFinish(hDropInfo);
SetFocus();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值