protected override void OnDragEnter(DragEventArgs e) { if (_enteredOnce) { OnDragOver(e); return; } _enteredOnce = true; _DDData r = default; if (r.GetData(e.Data)) { var b = Au.Util.Serializer_.Serialize((int)e.AllowedEffect, e.KeyState, r.files, r.shell, r.text, r.linkName); e.Effect = (DragDropEffects)(int)AWnd.More.CopyDataStruct.SendBytes(_msgWnd, 110, b); } else { Hide(); } }
DragDropEffects _OnDragEvent(int event_, int keyState, byte[] b) { if (!_isDragMode) { return(0); } DDEvent ev = (DDEvent)event_; //if(ev != DDEvent.Over) AOutput.Write(ev); if (ev == DDEvent.Enter) { var a = Au.Util.Serializer_.Deserialize(b); _allowedEffects = (DragDropEffects)(int)a[0]; _keyState = a[1]; _data = new DataObject(); var t = new _DDData { files = a[2], shell = a[3], text = a[4], linkName = a[5] }; if (t.files != null) { _data.SetData("FileDrop", t.files); } if (t.shell != null) { _data.SetData("Shell IDList Array", t.shell); } if (t.text != null) { _data.SetData("UnicodeText", t.text); } if (t.linkName != null) { _data.SetData("FileGroupDescriptorW", t.linkName); } } else { _keyState = keyState; } DragDropEffects ef = 0; if (ev != DDEvent.Leave) { var p = AMouse.XY; var w = _wWindow.ChildFromXY(p, screenXY: true); if (w.Is0) { w = _wWindow; } if (w != _wTargetControl && !_wTargetControl.Is0) { _InvokeDDHandler(_wTargetControl, DDEvent.Leave); _wTargetControl = default; } if (!w.Is0 && w.IsOfThisProcess && w.IsEnabled(true)) { if (ev != 0 && _wTargetControl.Is0) { if (ev == DDEvent.Over) { ev = 0; } else { _InvokeDDHandler(w, DDEvent.Enter, p); } } ef = _InvokeDDHandler(_wTargetControl = w, ev, p); } } else if (!_wTargetControl.Is0) { _InvokeDDHandler(_wTargetControl, ev); } if (ev >= DDEvent.Drop) { _wTargetControl = default; } return(ef); }