Das klingt nach arbeit! Ok! Aber es lohnt sich! Wirklich!
IDragSourceHelper
IDropTargetHelper
als letztes auch noch ansehen.
Damit kann man ab Win2k die Alpha-Blend Bilder unterstützen.
Das brauchst du noch dafür...
Delphi-Quellcode:
const
IID_IDropTargetHelper: TGUID = '{4657278B-411B-11D2-839A-00C04FD918D0}';
IID_IDragSourceHelper: TGUID = '{DE5BF786-477A-11D2-839D-00C04FD918D0}';
CLSID_DragDropHelper: TGUID = '{4657278A-411B-11D2-839A-00C04FD918D0}';
type
IDropTargetHelper = interface(IUnknown)
['{4657278B-411B-11D2-839A-00C04FD918D0}']
function DragEnter(hwndTarget: HWND; pDataObject: IDataObject; var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall;
function DragLeave: HRESULT; stdcall;
function DragOver(var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall;
function Drop(pDataObject: IDataObject; var ppt: TPoint; dwEffect: Integer): HRESULT; stdcall;
function Show(fShow: Boolean): HRESULT; stdcall;
end;
PSHDragImage = ^TSHDragImage;
TSHDragImage = packed record
sizeDragImage: TSize;
ptOffset: TPoint;
hbmpDragImage: HBITMAP;
ColorRef: TColorRef;
end;
// Nachricht vom IDragSourceHelper die durch das InitializeFromWindow
// ausgelöst wird : lParam steht eine PWClipbrd.TSHDragImage struktur
const
DI_GETDRAGIMAGE = 'ShellGetDragImage';
type
IDragSourceHelper = interface(IUnknown)
['{DE5BF786-477A-11D2-839D-00C04FD918D0}']
function InitializeFromBitmap(var SHDragImage: TSHDragImage; pDataObject: IDataObject): HRESULT; stdcall;
function InitializeFromWindow(Window: HWND; var ppt: TPoint; pDataObject: IDataObject): HRESULT; stdcall;
end;