.NET Color Struct Equality
December 16th, 2009When is white not white? When one is Color.White and the other is Color.FromArgb(0xff, 0xff, 0xff, 0xff).
When is white not white? When one is Color.White and the other is Color.FromArgb(0xff, 0xff, 0xff, 0xff).
Easy control transparency isn’t exactly a hallmark of Windows Forms. If you have a form with a background image or a gradient, the stock controls paint with a solid background to give a criminally egregious aesthetic.
There are lots of examples that demonstrate how to draw a rectangle with rounded corners using GDI+ in .NET. Converting such a rectangle to a Region so that it can be filled or be used for the geometry of a window can have less than perfect results, though.
Read the rest of this entry »
For those of us poor folk who didn’t make it to PDC this past fall, Microsoft has been taking the show to us in the form of its MSDN Unleashed series. Rob Bagby, developer evangelist, came to Salt Lake City to present and give updates about new and upcoming technologies for developers.

A few months ago I wrote about an approach to improving .NET cold startup performance. Here’s a little more information that I’ve learned since then.
As I mentioned the other day, I’m reading Jeffrey Richter’s book CLR via C# right now. I was kind of surprised to read this statement by the author: “If I had been involved in the design of the .NET Framework and compilers, I would not have offered properties at all…” (p. 218) Read the rest of this entry »
When running a .NET application for the first time after rebooting or hibernating the computer, you might find that it takes a long time to start up. I’ve been trying to address this problem in a few situations recently. In spite of having read several articles on the subject, I wasn’t having much success. Following some of the advice gave no noticeable improvement, and some (like using NGEN) actually slowed down startup. But I had some success recently, so I thought I’d explain how.
Sometimes you want the window handle of the host application when you’re writing an Office add-in. Excel includes that as a property of the Application object in newer versions of the object model, but Word and PowerPoint don’t. I seem to remember some sample code from Microsoft that suggests using FindWindow to get the handle, but that always seems problematic:
Instead, if you’re using managed code, you can just do this:
IntPtr hwnd = Process.GetCurrentProcess().MainWindowHandle;
Underneath this uses EnumWindows and GetWindowThreadProcessId to find the right window.
A question that arose in response to my previous post (about how string comparisons can produce unexpected results when done in a culture-sensitive way) was Which is right, StringComparison.Ordinal or StringComparison.InvariantCulture? The short answer: StringComparison.Ordinal.
I got a defect from QA today saying that our product was unable to track files in paths containing Unicode characters. I’ll admit that I was skeptical. I had just tried that myself the other day and it worked perfectly. Trying it again today also worked perfectly, but the QA engineer showed me otherwise.