win32与WPF的混合编程
来源:互联网 发布:手机淘宝5.7 编辑:程序博客网 时间:2024/05/16 04:52
本文主要讲的是win32程序中如何应用WPF界面
1.WPF概述
WPF缩写为Windows Presentation Foundation的缩写 ,其原来代号为“Avalon”,因“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。WPF是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。 程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持flow text support,3D视觉效果和强大无比的控件模型框架。
2.MVVM概述
MVVM(Model-View-ViewModel) 是MVC模式演变而来的, 在MVP模式的基础上实现了与WPF完美的结合.
Model是数据层; View也就是呈现层或者UI层; ViewModel是View的抽象,实现了View的接口和属性、命令以及Model的处理。如,下图为MVVM模式架构图:
3.Win32与WPF的混合编程
1> win32工程的工程属性添加/CLR支持
2> win32工程的Framework and References 中添加一些.net必须的引用, 如PresentationCore, PresentationFramework, System, WindowBase; (ps: 其.net引用集应该与要调用的WPF的引用集相同)
3> 建立WPF应用程序, 将工程的工程属性的Application/Output type设为 Class Library, 删除App.xaml和App.xaml.cs文件, 并在Win32程序的Framework and References / Projects添加这个WPF程序集.
4> 通过clr语法关联c++ 和 C#. 如:
HWND GetHwnd(HWND parent, int x, int y, int width, int height)
{
HwndSource^ source = gcnew HwndSource(
0, // class style
WS_VISIBLE | WS_CHILD, // style
0, // exstyle
x, y, width, height,
"WPF", // NAME
IntPtr(parent) // parent window
);
WpfPageHost::hostedPage = gcnew MainView();
WpfPageHost::hostedViewModel = gcnew MainViewModel();
source->RootVisual = WpfPageHost::hostedPage;
return (HWND) source->Handle.ToPointer();
}
5> 利用Microsoft Expression Blend设计WPF界面
参考资料:
1.WPFhttp://zh.wikipedia.org/zh-cn/Windows_Presentation_Foundation#_note-0
2.Expression Blend中文论坛http://www.expressioncn.com/
3.Expression Blend官网http://www.microsoft.com/expression/
4.WPF Apps With The Model-View-ViewModel Design Patternhttp://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx
5.Walkthrough: Hosting Windows Presentation Foundation Content in a Win32 Applicationhttp://msdn.microsoft.com/en-us/library/ms744829.aspx
- win32与WPF的混合编程
- WPF与Win32通信
- WPF与Win32图形系统
- WPF与Win32图形系统
- WPF与Win32图形系统
- WPF与Win32图形系统
- C与脚本的混合编程
- Delphi 与 FORTRAN语言的混合编程
- VC与matlab的混合编程总结
- Fortran与C的混合编程
- Delphi 与 FORTRAN语言的混合编程
- [转贴] C#与C++的混合编程
- matlab与vb的混合编程
- C#与Matlab混合编程的方式
- C#与C++的混合编程
- C++与汇编的混合编程
- C 与 C++ 的混合编程
- C#与C++的混合编程
- Date类学习总结(Calendar Date 字符串 相互转换 格式化)
- SHFileOperation CString到LPCTSTR的转换
- cmd关闭进程命令详解
- 错误代码:403
- ARM Linux启动过程分析
- win32与WPF的混合编程
- 关闭任务管理器杀不了的进程
- ant
- 开源技术选型手册 (china-pub 首发) -目 录
- 数据库设计十四技巧
- Javascript中最常用的55个经典技巧
- WebConfigurationManager 使用技巧
- 升级复制数据库 2000到2005
- 25个PHP游戏编程脚本代码