Monthly Archives: May 2013

The Essentials of COM – Now on Pluralsight!

My latest Pluralsight course is now available: The Essentials of COM

The short version: Learn the essentials of Microsoft’s Component Object Model. Understand its history and design, its relationship to classic C++, and how to write COM code effectively with modern C++.

Need more convincing?

This is the first in a series of courses exploring the essentials of COM and the Windows Runtime. In this first course, you are going to learn everything you need to know to use COM confidently and effectively. This course explores the history of COM. You will learn about how C++ shaped the design of COM. You will learn the essentials of compilation and linking, fundamental to the idea of dynamically linking applications and components together. By the end of this course you will have a thorough understanding of COM’s IUnknown interface, how and why it works the way it does, how to implement it, how to use it, and how to wrap it up in a safe and efficient manner with modern C++ libraries.

Here’s a brief description of the modules in The Essentials of COM.

Microsoft’s Component Object Model: the essence of COM, the core concepts, where it came from, and the key players.

COM and C++: COM as a better C++98, dynamic linking, exporting objects, managing lifetime, and extending objects.

IUnknown and modern C++: HRESULTs, GUIDs, implementing IUnknown, IUnknown and C#, smart pointers, and C++11 as a better COM.

Libraries: Windows Runtime C++ Template Library and the Active Template Library

Stay tuned for “The Essentials of WinRT” as well as part 2 of this course, covering activation, apartments, and security!

I realize that many developers are captivated by managed code, but if you’re one of the lucky ones that still use C++ then please help spread the word regarding my Pluralsight courses. I love producing these courses, but it’s only possible with your support. So go out there and tell everyone you know that Pluralsight is the place to go for hardcode C++ developer training.


Introducing Direct2D 1.1 (and DirectX 11.1)

My latest column for the May 2013 issue of MSDN Magazine is now available online.

Direct2D 1.1 might sound like a minor version update, and in some ways, it is. It doesn’t fundamentally change the API. Everything you know about Direct2D continues to be every bit as relevant today. It’s still modeled around device-specific and device-independent resources, render targets, geometries, brushes and so on. But in version 1.1, Direct2D grows up. The original version of Direct2D that launched with Windows 7 was in some ways an outsider to DirectX. It lagged behind, being tied to DirectX 10 rather than 11, the version of DirectX that it launched with. Even though it provided an excellent interop story for GDI and the Windows Imaging Component, it didn’t provide the best possible experience for working with DirectX itself. It wasn’t bad, but in Direct2D 1.1 things get a whole lot better. Direct3D and Direct2D are now in many ways siblings in the DirectX family. Thanks to this greater parity, even more of the graphics processing unit (GPU) is now available to the Direct2D developer without the need to jump out of the 2D abstraction. Moreover, when you do need to make the leap, it’s both simple and efficient.

Check out my latest course on Pluralsight for a crash course on DirectX 11.1 and Direct2D 1.1!

You can find links to more of my articles here.