Interop with PROPVARIANTs in .NET

Introduction When it comes interop, .NET has solved most of the hard problems. However, if you’ve worked with COM interfaces that return or take PROPVARIANTs as parameters, you may have noticed that there isn’t much support for this union’d struct type. I came across one such interface, and needed a good way to interop with…

1

Interop with PROPVARIANTs in .NET

When it comes interop, .NET has solved most of the hard problems. However, if you’ve worked with COM interfaces that return or take PROPVARIANTs as parameters, you may have noticed that there isn’t much support for this union’d struct type. I came across one such interface, and needed a good way to interop with its…


PropVariant.cs

Back to Interop with PROPVARIANTs in .NET namespace System.Runtime.InteropServices.ComTypes{    using System;    using System.Runtime.InteropServices;    /// <summary>    /// Represents the OLE struct PROPVARIANT.    /// </summary>    /// <remarks>    /// Must call Clear when finished to avoid memory leaks. If you get the value of    /// a VT_UNKNOWN prop, an implicit AddRef is called, thus your reference will    ///…


Shell Style Drag and Drop in .NET – Part 3

In Part 1, Shell Style Drag and Drop in .NET (WPF and WinForms), I opened up the discussion about implementing a nice Shell style drag image, like that of Windows Explorer, in C#. This involved exposing a couple of COM interfaces to .NET, as well as implementing the COM IDataObject interface. In Shell Style Drag…


Shell Style Drag and Drop in .NET – Part 2

Last week, in Shell Style Drag and Drop in .NET (WPF and WinForms), I looked at hooking up the COM interfaces necessary to implement drag images using the Windows Shell. This week, I’m going to introduce some .NET 3.5 extensions (which can be easily converted into .NET 3.0 and earlier static helper functions) that reduce…

4

Shell Style Drag and Drop in .NET (WPF and WinForms)

If you’ve worked with .NET drag and drop, you may have noticed that the pretty images that Windows Explorer paints while dragging items does not come for free. In fact, by default, .NET will give you a rather ugly black and white cursor with the drag effect indicator (copy, move, none, etc). I wasn’t pleased…