使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page。下面我就作个详细的介绍.程序员
1、建立工程, 因为MFC的Wizard会生成不少用不到的代码,因此我准备从一个空的工程开始建立一个MFC的工程。函数
a) 打开VS2005,菜单File->New->Projects…, 左面选择Visual C++->Win32,右面选择Win32 Console Application,给工程起个名字CPlusPlus_WPF, Ok进入下一步。见Figure 1this
Figure 1 Create Project 1spa
b) 工程基本配置,在Application Setting中选择Console Application和MFC.。Finish进入下一步。见Figure 2.net
Figure 2 Application Setting3d
c) 修改工程,使工程变成MFC Windows程序。继承
i. 删除CPlusPlus_WPF.cpp和CPlusPlus_WPF.h文件开发
Figure 3 Remove no used filesit
ii. 添加CWinApp派生类, 在工程上点击鼠标右键,Add=>Class…io
Figure 4 Add New Class Menu
在弹出的对话框中,左边选择MFC,右面选择MFC Class,点击Add进入下一步
Figure 5 Create New Class Dialog
在弹出的对话框中输入类名: CCPlusPlus_WPFApp, 基类选择CWinApp
Figure 6 Add CWinApp Derived Class
i. 用同上的方法添加CWnd派生类,Class name为CCPlusPlus_WPFMainWnd, Base class为CWnd。
ii. 修改工程属性。将属性中的System->SubSystem从Concole改为Windows,见Figure 7
Figure 7 Change property
到这一步,一个基本的MFC程序所须要的两个类CWinApp和CWnd派生类就添加完了。咱们的程序能够顺利编译经过,可是还不能运行,请继续看下一步
d). 为CCPlusPlus_WPFMainWnd添加代码;
l 添加建立窗口函数,函数以下:
l 继承CWnd类的PostNcDestroy函数,这个函数是CWnd类中的虚函数,是在窗口退出后,最后一个被调用的函数,咱们在这个函数里还删除本身。
e) 为CCPlusPlus_WPFApp添加代码
l 把构造函数改由protect改成public
l 定义theApp, 即CCPlusPlus_WPFAp theApp
l 实现InitInstance()
编译运行,能够看到窗口了,到这步位置,一个基本的MFC程序就已经创建起来了,你们能够对窗口添加想要的风格。这里就不作详细说明了。
2、 进一步修改工程,使其支持WPF
1. 修改工程属性,在工程属性的General的Common Language Runtime Support中选择/Clr, 这个选项可让这个工程支持Common Language Runtime. 这样咱们的工程里就能够写C++/CLI的代码,用来操做WPF了。
Figure 8 Support clr
2. 添加References,在工程属性中的左面的树上选择,Common Properties->References(C++程序员好像机会不多用到)。
Figure 9 Add References
点击Add New Reference按钮,弹出以下对话框
顺次添加以下.NET dlls. 到如今位置,这个工程就已经彻底支持WPF了
3. 添加显示WPF的部分
a) 建立一个XAML文件,我已经上传一个,Clock.XAML,这段XAML在Windows SDK中也能够找到。
b) 动态读取XAML文件
c) 把WPF的Page Host到MFC的窗口中。完整代码以下
d) 在CCPlusPlus_WPFMainWnd::OnCreate中调用上面的函数。
e) 编译运行,一切Ok了。
固然,这只是基本的步骤,在这个基础上就能够利用C++和WPF来开发一个完整的软件了