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->OLEDragMode = OLEDragSftControlManual;

    return TRUE;
}

void COLEDragDlg::OnDragStartingSftDirectory1(short Button, short Shift, long xPos, long yPos) 
{
    ISftDirectoryFolderPtr pFolder;

    pFolder = m_vDir1->CurrentFolder;
    if (pFolder) 
        m_vDir1->OLEDrag(VARIANT_FALSE, VARIANT_TRUE, -1, -1);
}

void COLEDragDlg::OnOLEStartDragSftDirectory1(LPDISPATCH FAR* Data, long FAR* AllowedEffects) 
{
    IVDMDataObjectPtr pData(*Data);

    pData->Clear();
    pData->SetData(_variant_t(), _variant_t((short) sftCFText));
    *AllowedEffects = 1; //vbDropEffectCopy
}

void COLEDragDlg::OnOLESetDataSftDirectory1(LPDISPATCH FAR* Data, short FAR* Format) 
{
    IVDMDataObjectPtr pData(*Data);

    if (*Format == sftCFText) {
        CString str;
        CString strName = (LPCWSTR) m_vDir1->CurrentFolder->Name;
        str.Format(_T("We're dragging a text string - \"%s\" - drop it in Write, Word (for example)"), strName);
        pData->SetData(_variant_t((LPCTSTR) str), _variant_t((short) sftCFText));
    }
}