Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DropTarget.cs / 1305376 / DropTarget.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Diagnostics; using System.Security.Permissions; using System.Security; using System.ComponentModel; using IComDataObject = System.Runtime.InteropServices.ComTypes.IDataObject; ////// internal class DropTarget : UnsafeNativeMethods.IOleDropTarget { private IDataObject lastDataObject = null; private DragDropEffects lastEffect = DragDropEffects.None; private IDropTarget owner; public DropTarget(IDropTarget owner) { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "DropTarget created"); this.owner = owner; } #if DEBUG ~DropTarget() { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "DropTarget destroyed"); } #endif private DragEventArgs CreateDragEventArgs(object pDataObj, int grfKeyState, NativeMethods.POINTL pt, int pdwEffect) { IDataObject data = null; if (pDataObj == null) { data = lastDataObject; } else { if (pDataObj is IDataObject) { data = (IDataObject)pDataObj; } else if (pDataObj is IComDataObject) { data = new DataObject(pDataObj); } else { return null; // Unknown data object interface; we can't work with this so return null } } DragEventArgs drgevent = new DragEventArgs(data, grfKeyState, pt.x, pt.y, (DragDropEffects)pdwEffect, lastEffect); lastDataObject = data; return drgevent; } int UnsafeNativeMethods.IOleDropTarget.OleDragEnter(object pDataObj, int grfKeyState, long pt, ref int pdwEffect) { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "OleDragEnter recieved"); NativeMethods.POINTL ptl = new NativeMethods.POINTL(); ptl.x = GetX(pt); ptl.y = GetY(pt); Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "\t" + (ptl.x) + "," + (ptl.y)); Debug.Assert(pDataObj != null, "OleDragEnter didn't give us a valid data object."); DragEventArgs drgevent = CreateDragEventArgs(pDataObj, grfKeyState, ptl, pdwEffect); if (drgevent != null) { owner.OnDragEnter(drgevent); pdwEffect = (int)drgevent.Effect; lastEffect = drgevent.Effect; } else { pdwEffect = (int)DragDropEffects.None; } return NativeMethods.S_OK; } int UnsafeNativeMethods.IOleDropTarget.OleDragOver(int grfKeyState, long pt, ref int pdwEffect) { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "OleDragOver recieved"); NativeMethods.POINTL ptl = new NativeMethods.POINTL(); ptl.x = GetX(pt); ptl.y = GetY(pt); Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "\t" + (ptl.x) + "," + (ptl.y)); DragEventArgs drgevent = CreateDragEventArgs(null, grfKeyState, ptl, pdwEffect); owner.OnDragOver(drgevent); pdwEffect = (int)drgevent.Effect; lastEffect = drgevent.Effect; return NativeMethods.S_OK; } int UnsafeNativeMethods.IOleDropTarget.OleDragLeave() { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "OleDragLeave recieved"); owner.OnDragLeave(EventArgs.Empty); return NativeMethods.S_OK; } int UnsafeNativeMethods.IOleDropTarget.OleDrop(object pDataObj, int grfKeyState, long pt, ref int pdwEffect) { Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "OleDrop recieved"); NativeMethods.POINTL ptl = new NativeMethods.POINTL(); ptl.x = GetX(pt); ptl.y = GetY(pt); Debug.WriteLineIf(CompModSwitches.DragDrop.TraceInfo, "\t" + (ptl.x) + "," + (ptl.y)); DragEventArgs drgevent = CreateDragEventArgs(pDataObj, grfKeyState, ptl, pdwEffect); if (drgevent != null) { owner.OnDragDrop(drgevent); pdwEffect = (int)drgevent.Effect; } else { pdwEffect = (int)DragDropEffects.None; } lastEffect = DragDropEffects.None; lastDataObject = null; return NativeMethods.S_OK; } private int GetX(long pt) { return(int)(pt & 0xFFFFFFFF); } private int GetY(long pt) { return(int)((pt >> 32) & 0xFFFFFFFF); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CheckableControlBaseAdapter.cs
- CancellationTokenSource.cs
- ColorConvertedBitmap.cs
- OrderedEnumerableRowCollection.cs
- FileSecurity.cs
- EntityClassGenerator.cs
- ResourceBinder.cs
- InputElement.cs
- SystemWebSectionGroup.cs
- DesignerCommandAdapter.cs
- DoubleAnimationUsingPath.cs
- FullTextState.cs
- Camera.cs
- TrackingProfileSerializer.cs
- TreeNodeMouseHoverEvent.cs
- Instrumentation.cs
- XamlStream.cs
- Viewport3DVisual.cs
- IfJoinedCondition.cs
- XmlSchemaSubstitutionGroup.cs
- SvcMapFileSerializer.cs
- RawStylusSystemGestureInputReport.cs
- QueryExpression.cs
- RegexCode.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- TextPointerBase.cs
- PanelStyle.cs
- GeneralTransform.cs
- TransformGroup.cs
- AbstractDataSvcMapFileLoader.cs
- QilScopedVisitor.cs
- ObjectQueryState.cs
- EntityDataSourceDataSelection.cs
- StatusBarDrawItemEvent.cs
- MsmqIntegrationOutputChannel.cs
- PropertyChangingEventArgs.cs
- RegexCapture.cs
- PartialList.cs
- FileSystemInfo.cs
- WMIInterop.cs
- DataRecord.cs
- SignatureHelper.cs
- SqlTriggerAttribute.cs
- AutoCompleteStringCollection.cs
- ClientScriptManager.cs
- DetailsViewUpdateEventArgs.cs
- DbRetry.cs
- TypeHelpers.cs
- WindowsAuthenticationModule.cs
- EntityProviderServices.cs
- DescriptionAttribute.cs
- CacheRequest.cs
- TreeViewEvent.cs
- base64Transforms.cs
- FileClassifier.cs
- Int32RectValueSerializer.cs
- FixedHyperLink.cs
- PrintDocument.cs
- CodeAttributeDeclarationCollection.cs
- Registry.cs
- SqlSupersetValidator.cs
- ContentValidator.cs
- PagedControl.cs
- ReflectionUtil.cs
- DrawItemEvent.cs
- TypeConverter.cs
- IIS7UserPrincipal.cs
- TokenBasedSet.cs
- InternalConfirm.cs
- DllNotFoundException.cs
- NamespaceEmitter.cs
- _ShellExpression.cs
- DataGridViewTopLeftHeaderCell.cs
- KeyedHashAlgorithm.cs
- WindowsFormsSectionHandler.cs
- SystemDropShadowChrome.cs
- x509utils.cs
- DrawingBrush.cs
- SByte.cs
- followingsibling.cs
- WindowsGraphics2.cs
- FontStyles.cs
- ProfileService.cs
- BindingOperations.cs
- HttpCapabilitiesEvaluator.cs
- MimeParameter.cs
- TextEditorSelection.cs
- URIFormatException.cs
- ProvidePropertyAttribute.cs
- TemplateKeyConverter.cs
- HtmlMeta.cs
- ImageDrawing.cs
- DateTimeUtil.cs
- WindowsPrincipal.cs
- DiagnosticsConfigurationHandler.cs
- ProfileParameter.cs
- ImageAnimator.cs
- Control.cs
- TextBox.cs
- initElementDictionary.cs