开发一个简单的NotePad,使用了Edit控件,对话框和Edit控件都已经设置了属性Accept files ,消息相应函数也已经添加,运行的时候拖放文件到Edit控件里的时候出现了“+
"号,但是此时对话框是灰色的,而且放开鼠标后也没能打开文件,没什么反应,实在是找不出是什么问题了,求指教
void CNotePadDlg::OnDropFiles(HDROP hDropInfo)
{
AfxMessageBox("DropFilesTest");
// TODO: Add your message handler code here and/or call default
if(!Prompt())
return;
char szFile[MAX_PATH];
UINT n=DragQueryFile(hDropInfo,0,szFile,sizeof(szFile));
/*****start***参数解释******
函数:UINTDragQueryFile( HDROP hDrop,UINT iFile,LPTSTRlpszFile,UINT cch);
功能:查询拖放文件的相关信息
HDROP:拖放文件的标识符
iFile:待查询的文件索引号,可以同时拖拽多个文件,因此就需要一个索引号来进行区分,如果该参数为0xFFFFFFFF,
则该函数返回拖拽的文件个数
lpszFile:用于存放文件名的缓冲区首地址
cch:缓冲区长度
********end****参数解释**********/
CString str=szFile;
n=str.ReverseFind('\\');
if(n>0)
{
str=str.Mid(n+1);
//打开文件
HANDLE hFile=::CreateFile(szFile,GENERIC_READ,FILE_SHARE_READ,
NULL,OPEN_EXISTING,0,NULL);
if(INVALID_HANDLE_VALUE==hFile)
{
AfxMessageBox("文件打开失败");
return ;
}
m_szOpenFileFullPath=szFile;//保存当前打开文件的路径,保存(不是另存)的时候使用
DWORD dwLen=::GetFileSize(hFile,NULL);
char *pBuf=new char[dwLen+1];
DWORD dwRet=0;
::ReadFile(hFile,pBuf,dwLen,&dwRet,NULL);
pBuf[dwRet]=0;//文件末尾置为0
SetDlgItemText(IDC_TEXT,pBuf);
CloseHandle(hFile);
delete []pBuf;
m_myEdit.SetModify(FALSE);
}
CDialog::OnDropFiles(hDropInfo);
}