I think Visual Studio’s static analysis warning for checking parameters for null before they are used is generally a good idea, but the code to check the parameters can get really tedious.
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.
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.
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) Continue reading
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:
- You can search by class name (e.g. “OpusApp” for Word), but what if you somehow have multiple Word processes running? Which window do you get?
- You can search by window text, but it can be really hard to figure out what the window text is.
- You can set the Caption property on the Application object to some magic text and search for a window with the magic text, but Word throws all kinds of other stuff into the caption so this generally doesn’t work reliably.
Instead, if you’re using managed code, you can just do this:
IntPtr hwnd = Process.GetCurrentProcess().MainWindowHandle;
Underneath this uses
GetWindowThreadProcessId to find the right window.