Hosting WPF in Native HWND Apps
Things can get a bit wackier when hosting a managed WPF control in a native Windows application, like a raw Win32 application or an MFC application. The first barrier to entry is that WPF is managed .NET code, whereas your non-Windows Forms HWND applications are likely written in native C/C++. There are various ways to interact programmatically between native and managed code (e.g., P/Invoke) and COM (the Component Object Model). For example, one way to use a WPF element in a native HWND-based application is to host the WPF element in a custom Windows Forms User Control and use the support in MFC 7.1+ for hosting Windows Forms controls.[121]
However, your smoothest interoperability experience is to use Visual Studio 2005's capability to switch your native C++ application to a managed one. For example, consider an MFC application, like the simple one shown in Figure B-8.

Figure B-8. A managed MFC application
To compile this application as managed code, right-click on the project in the Solution Explorer, choose Configuration Properties → General, and set the "Common Language Runtime support" option to "Common Language Runtime Support /clr." Compiling this sample MFC application and running it yields the same behavior as Figure B-8 (in fact, Figure B-8 is the managed version—fooled ya . . . ). Once the application is compiled as a managed application, you ...