SHDoDragDrop APIの互換関数

(2004.03.25)
// shell32.dll version 6.0 or later
static HRESULT Emulate_SHDoDragDrop(HWND hwnd, IDataObject pdtobj, IDropSource pdsrc, DWORD dwEffect, DWORD pdwEffect)
{
    HRESULT hr = S_OK;
    
    IDragSourceHelperPtr spDragSourceHelper;
    hr = spDragSourceHelper.CreateInstance(CLSID_DragDropHelper);
    if (FAILED(hr))
    {
         そのまま処理を続行する
         → Win2k以外ではサポートされていない
    }
    
    IDragSourceHelperがあれば使用する
    if (spDragSourceHelper)
    {
        POINT pt = {0, 0};
        
        GetCursorPos(&pt);
        ScreenToClient(hwnd, &pt);
        
        hr = spDragSourceHelper-InitializeFromWindow(hwnd, &pt, pdtobj);
        if (FAILED(hr))
        {
          無視する。。
        }
    }
    return DoDragDrop(pdtobj, pdsrc, dwEffect, pdwEffect);
}
一覧に戻る
© 2003 WAC.com All Right Reserved.