My code:
void CWGAccountFilterDlg::OnDropFiles(HDROP hDropInfo)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnDropFiles(hDropInfo);
wchar_t lpFilePath[MAX_PATH] = { 0 };
int nCount = DragQueryFile(hDropInfo, -1, NULL, 0);
DragQueryFile(hDropInfo, nCount, lpFilePath, _countof(lpFilePath));
DragFinish(hDropInfo);
GetDlgItem(IDC_EDIT_FILE)->SetWindowText(lpFilePath);
m_FilePath.Format(L"%s", lpFilePath);
}
The 2nd calling of DragQueryFile
returns 0 (this situation is correct) and lpFilePath
(this is not the expect) has no data in it. I'm sure that the nCount
value is valid, no buffer overflow.
The dialog and the CEdit control all set 'accept files' to true. And there is a class named CMyEdit
implement from CEdit
, and processed the OnDropFiles
function.