Yes, I implemented the IDocHostUIHandler
Here the relevant codeparts
the GetDropTarget will be called but DropTarget.OleDragEnter is never called
public int GetDropTarget(Interop.IOleDropTarget pDropTarget, out
Interop.IOleDropTarget ppDropTarget)
{
if (_dropTarget == null)
{
HtmlEditor editor = (_hostControl as HtmlEditor);
if (editor != null)
{
DataObjectConverter converter = editor.DataObjectConverter;
if (converter != null)
{
_dropTarget = new DropTarget(editor, converter, pDropTarget);
}
}
}
ppDropTarget = _dropTarget as Interop.IOleDropTarget;
if (ppDropTarget != null)
{
return Interop.S_OK;
}
return Interop.E_NOTIMPL;
}
protected sealed class DropTarget : Interop.IOleDropTarget
{
private HtmlControl _owner;
private DataObject _currentDataObj;
private IntPtr _currentDataObjPtr;
private Interop.IOleDropTarget _originalDropTarget;
private DataObjectConverter _converter;
private DataObjectConverterInfo _converterInfo;
public DropTarget(HtmlControl owner, DataObjectConverter converter,
Interop.IOleDropTarget originalDropTarget)
{
_owner = owner;
_converter = converter;
_originalDropTarget = originalDropTarget;
}
#region Drag and Drop
public int OleDragEnter(IntPtr pDataObj, int grfKeyState, long pt, out int
pdwEffect)
{
pdwEffect = Interop.DROPEFFECT_NONE;
DataObject dataObject = new
DataObject(Marshal.GetObjectForIUnknown(pDataObj)) ;
_converterInfo = _converter.CanConvertToHtml(dataObject);
if (_converterInfo == DataObjectConverterInfo.CanConvert)
{
_currentDataObj = new DataObject(DataFormats.Html, String.Empty);
IntPtr i = Marshal.GetIUnknownForObject(_currentDataObj);
Guid guid = new Guid("0000010E-0000-0000-C000-000000000046");
Marshal.QueryInterface(i, ref guid, out _currentDataObjPtr);
Marshal.Release(i);
return _originalDropTarget.OleDragEnter(_currentDataObjPt r, grfKeyState, pt,
out pdwEffect);
}
if (_converterInfo == DataObjectConverterInfo.Disabled)
{
pdwEffect = Interop.DROPEFFECT_NONE;
}
else if (_converterInfo == DataObjectConverterInfo.Unhandled)
{
return _originalDropTarget.OleDragEnter(pDataObj, grfKeyState, pt, out
pdwEffect);
}
return 0;
}
public int OleDragOver(int grfKeyState, long pt, out int pdwEffect)
{
if (_converterInfo != DataObjectConverterInfo.Disabled)
{
return _originalDropTarget.OleDragOver(grfKeyState, pt, out pdwEffect);
}
pdwEffect = Interop.DROPEFFECT_NONE;;
return 0;
}
public int OleDragLeave()
{
_converterInfo = DataObjectConverterInfo.Disabled;
if (_currentDataObj == null)
{
return 0;
}
_currentDataObj = null;
Marshal.Release(_currentDataObjPtr);
_currentDataObjPtr = IntPtr.Zero;
return _originalDropTarget.OleDragLeave();
}
public int OleDrop(IntPtr pDataObj, int grfKeyState, long pt, out int
pdwEffect)
{
Form form;
pdwEffect = Interop.DROPEFFECT_NONE;
int i = 0;
Control control = _owner;
if (control != null)
{
control = control.Parent;
form = control as Form;
if (form == null)
{
return 0;
}
form.BringToFront();
return 0;
}
if (_converterInfo == DataObjectConverterInfo.CanConvert)
{
DataObject dataObject = new
DataObject(Marshal.GetObjectForIUnknown(pDataObj)) ;
if (_converter.ConvertToHtml(dataObject, _currentDataObj))
{
IntPtr j = Marshal.GetIUnknownForObject(_currentDataObj);
Guid guid = new Guid("0000010E-0000-0000-C000-000000000046");
Marshal.QueryInterface(j, ref guid, out _currentDataObjPtr);
i = _originalDropTarget.OleDrop(_currentDataObjPtr, grfKeyState, pt, out
pdwEffect);
Marshal.Release(_currentDataObjPtr);
_currentDataObj = null;
_currentDataObjPtr = IntPtr.Zero;
}
else
{
pdwEffect = Interop.DROPEFFECT_NONE;
}
}
else if (_converterInfo == DataObjectConverterInfo.Unhandled)
{
i = _originalDropTarget.OleDrop(pDataObj, grfKeyState, pt, out pdwEffect);
}
_converterInfo = DataObjectConverterInfo.Disabled;
return i;
}
}
"Shakir Hussain" <sh**@fakedomain.com> wrote in message
news:uy**************@tk2msftngp13.phx.gbl...
dom,
Have you implemented IDocHostUIHandler? You will get control there for
GetDropTarget.
Paste the code so that i can investigate, if it doesnt work.
Shak.
<do*@doesntexist.com> wrote in message
news:ca**********@newsreader1.utanet.at... Hi there
In my app I host the webbrowser. If I return my own implementation in
GetDropTarget my methods are never called ( if i return the original
dropTarget or NOTIMPLEMENTED everything works fine)
Framework 1.1
please help
ps to contact me replace -aT-
d.mohl-aT-hico.com