IDragDropManagerInterop 接口是为了支持 Windows 运行时(WinRT)与传统 Win32 拖放操作之间的交互而引入的。此接口定义了一些用于设置和获取与拖放操作相关的信息的方法。

以下是 IDragDropManagerInterop 接口的声明:
#undef INTERFACE
#define INTERFACE IDragDropManagerInterop

DECLARE_INTERFACE_IID_(IDragDropManagerInterop, IUnknown, "2C941FC5-A0DA-4CAF-9093-5169FF9BAC67")
{
    STDMETHOD(GetForWindow)(
        HWND hwnd,
        REFIID riid,
        void **ppv) PURE;
};

主要的方法是 GetForWindow,该方法用于获取与指定窗口相关联的 IDragDropManager 接口。

如果您需要在 Win32 应用程序中使用这个接口,可以使用 RoGetActivationFactory 函数来获取 IDragDropManagerInterop 接口的实例。以下是示例代码:
#include <DragDropInterop.h>

IDragDropManagerInterop* pDragDropManagerInterop = nullptr;
HRESULT hr = RoGetActivationFactory(
    HStringReference(L"Windows.UI.Input.Core.CoreDragDropManager").Get(),
    __uuidof(IDragDropManagerInterop),
    (void**)&pDragDropManagerInterop
);

if (SUCCEEDED(hr))
{
    // 使用 pDragDropManagerInterop 调用接口方法
    // ...
    pDragDropManagerInterop->Release();
}

请注意,上述代码使用了 Windows 运行时的 API,因此需要链接 runtimeobject.lib 库,并且代码需要在支持 WinRT 的编译环境中运行。


转载请注明出处:http://www.pingtaimeng.com/article/detail/27276/Win32 API/Dragdropinterop.h/IDragDropManagerInterop