BOOL COLEDragDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_vDir1 = m_Dir1.GetControlUnknown();
m_vDir1->OLEDropMode = OLEDropSftControlManual;
m_vDir1->AutoExpandDragDrop = VARIANT_TRUE;
return TRUE;
}
void COLEDragDlg::OnOLEDragDropSftDirectory1(LPDISPATCH FAR* Data, LPDISPATCH FAR* Folder, long FAR* Effect, short FAR* Button, short FAR* Shift, float FAR* x, float FAR* y, BOOL FAR* DefaultHandling)
{
IVDMDataObjectPtr pData(*Data);
ISftDirectoryFolderPtr pFolder(*Folder);
if (pData->GetFormat(sftCFFiles)) {
int i;
for (i = 1 ; i <= pData->Files->Count ; ++i) {
CString str;
CString strName((LPCWSTR)pData->Files->Item[i]);
str.Format(_T("\"%s\" being dropped."), strName);
MessageBox(str);
// perform your own processing here
}
} else {
// some other format
}
// make sure the control doesn't perform its usual default handling of
// the files (copy/move, etc.)
*DefaultHandling = VARIANT_FALSE;
}
void COLEDragDlg::OnOLEDragOverSftDirectory1(LPDISPATCH FAR* Data, LPDISPATCH FAR* Folder, long FAR* Effect, short FAR* Button, short FAR* Shift, float FAR* x, float FAR* y, long FAR* State, BOOL FAR* DefaultHandling)
{
IVDMDataObjectPtr pData(*Data);
ISftDirectoryFolderPtr pFolder(*Folder);
*Effect = 0;
if (pData->GetFormat(sftCFFiles)) {
if (pFolder != NULL) {
// we'll accept anything
*Effect = 3; // vbDropEffectCopy | vbDropEffectMove
}
}
// make sure the control doesn't perform its usual default handling of
// the files (copy/move, etc.)
*DefaultHandling = VARIANT_FALSE;
}