1,MFC 基于VC6.0的微软基础库 2,WPF 做绚丽界面一律用WPF,做一般绚丽界面用WinForm,做windows标准界面用MFC WPF也有个致命缺点,就是要.net framework支持 3,DirectUI Windowsless或者Handleless,也就是无句柄窗口 4,迅雷界面引擎 迅雷7应用开发在线文档 5,网上讨论 /////////////////////////////////////////////////// (1)windowless或者称handleless,也就是无句柄窗口,在设计和实现的时候,每个控件都自己实现,最后画到父窗口中。另一个伪windowless是用标准mfc控件,然后通过hook或其它远程线程注入等技术,让spy++等软件,看不到窗口句柄。这主要是为了防止盗号木马通过edit窗口句柄,盗取用户名和密码。 (2)windowless 或 handleless 或 DirectUI 技术,将首选 WGI !WGI 后生可畏,将是永远的经典! http://code.google.com/p/oic-wgi/downloads/list 基于C语言 (3)qq和msn都是windowless方式 (4)windowless技术并不是适用所有的软件界面。这一点还需要开发者自已分清楚。 就目前来讲windowless比较适用于基于对话框的应用程序。 (5)DirectUI是目前windows平台上最流行的一种无窗口界面技术 国内流行的QQ/MSN/迅雷等都采用此种技术 (6)界面开发主要解决的问题是:如何把美工的创意,更方便的用代码实现。或者,界面开发技术限制了哪些美术创意的实现? (7)感觉windowless,DirectUI这种技术,只有这种大公司才有能力搞。 感觉这种东西要做出通用的太难了 我猜测他们做的这个东西,虽然可以用了,但内部没有全部推广使用。原因可能是还不够通用,还不够成熟。 (8)微软是因为内部太多界面库了。各个部门各用各的。 QQ这种,纯粹是为了自己产品服务的,人家也不会卖自己的库,所以不需要通用。自已的产品需要什么控件,就往库里开发什么控件。 (9)windowless作为一种新的界面技术,当然要重新实现Win32界面原来的提供的机制了, 我个人还是很喜欢windowless的界面机制的,非常自由,开发者可以天马行空的实现自己的想法创意, (10)windowless可以增加破解外挂的难度,也就是增加了破解的门槛,不是随便会弄个对话框程序就可以破解,但还是不能根本解决问题,QQ登录密码,一样可以拿到。 (11)wpf慢死你~学那么多技术干嘛,学好win32就可以了。wpf过几年没了,就出来了fpw了 (12)从CWnd直接派生,也可以天马行空的实现自己的想法创意。并且在实现创意是,不用考虑另人头痛的剪裁、焦点、消息循环等等与界面不相关的东东。 (13)wpf与我讨论的windowless不是一个概念。 (14)其实楼主说了这么多,无非就是一点:“windows做完这一整套东西已经是相当大的工作量,大家再重新开发完全得不偿失而且难以达到Windows gui的稳定性”。 (15)如果需要文档/视图的话,还是用mfc好了,现在mfc很漂亮了,像office2007。 紧跟大公司新技术吧,要不就找个认为设计的好的开源项目,一直用、一直改。不过跟着大公司走还是最好的选择吧 (16)丢一个这东西出来好了。 (17)我其实把mfc和windowless都归到win32技术体系的,实现上windowless也是用mfc开发,只不过不使用它默认的CButton等这些控件,仍然使用GDI或GDI+等技术来绘制。正如你说的,这个体系有点久远,所以微软设计了wpf,来逐步代替win32。到目前为止wpf还是不成功的。但我坚信,迟早一天会成功的。wpf开发的产品,体积又大,运行速度又慢,是制约它发展的最大瓶颈。不过vs2010采用wpf开发后,发现,像vs2010这么大规则的项目,其实运行速度已经很快了,不比vs2008差多少。或许microsoft做过优化? (18)到讨论成这样了,那gtk,qt这类的怎么活啊. 我也抛一个出来,娱乐一下 (19)嘿嘿, 我喜欢GTK。 见到看到一篇文:Qt vs GTK 另外, VS2010中,MFC已经做了大量的扩充,可以做出漂亮的界面的 (20)如果非要用Direct UI做项目,从研发成本考虑,还不如直接花钱买一套UI库,我看这个公司的就不错:http://www.directui.com/,所有的控件全部用接口的形式访问。 (21)对微软来说,做一个NATIVE-WPF易如反掌。蒋晟大大也说过,微软内部也讨论过这个问题,不过最终放弃了。这个可以理解,WPF是.NET的杀手锏,如果把这个杀手锏转交给非托管语言,对.NET战略是致命的。我还真想知道,如果没有WPF,还有多少人会选择.NET。讨论这个没有意义。 还是回到windowless吧。近几年很多人关注DirectUI/Windowless,却不知DirectUI为何物。我曾经在某个帖子里面做过比喻:DirectUI = Window + Windowless,所有在屏幕上显示的东西都是DirectUI方式,3D是,浏览器是,连普通窗口也是,大家都在显存的同一块区域显示所有内容,哪里分什么有窗口无窗口。为什么要把窗口分成有句柄和无句柄呢?因为微软的有句柄窗口是工业标准,操作方式有章可循,窗口API大家耳熟能详,家家户户都用没有锁的门窗,所有人都知道该怎么操作窗口,偷鸡摸狗的人当然也知道,所以第一个问题就是标准带来了更高的安全风险,于是乎很多人开始希望在自家门窗上加一把锁,而且只有自己有钥匙。最早加锁的人还是微软自己,MSN要保护用户隐私,搞了个DirectUIHWND,被人发现后,DirectUI这个名称就逐渐扩散开来,也有越来越多的软件给自己的窗口加了锁。从这个时候起,DirectUI = Windowless,就是为了跟不安全的有句柄窗口区别开来。DirectUI 的另一层含义就是隐秘、非标准,这个概念会在用户心里生根,一旦有哪家的所谓 DirectUI 窗口因为流行而不幸成为另一个标准,它绝对会被人们踢出 DirectUI 阵营,结局跟有句柄窗口没什么两样,就因为太标准而失去了隐秘的特性。也正是因为隐秘、非标准的特性,多少人削尖脑袋想找到 DirectUI 框架、类库、标准,结果是找不到的,因为没有标准。反过来说,只要不是标准的,都可以叫做 DirectUI,人人都可以自夸我的窗口是 DirectUI,其实不用夸,本来就是,夸多了会误导更多人。 当然,Windowless 不仅仅是为了安全,在能力上自然也有自己的过人之处,这些能力就交给楼主来总结吧,我只举个最小的例子:如果想让一个窗口的某个子控件藏在背景贴图的后面,普通窗口是办不到的,对Windowless来说轻而易举。 (22)你忽视了handless一个最大的好处,就是无闪烁绘图,使用思想老旧的win32控件是很难做到毫无闪烁的。 p.s 现在腾讯全系列产品都是DirectUI。可以看到,它所有窗口的类名是TXGuiFoundation,它的目的很明显就是想成为腾讯的MFC(Microsoft Foundation Classes)。 (23)duilib 库不错,是开源的。。现在正在发展。希望各位可以参与 (24)这个和闪烁没有任何关系。win32方式,可以做的一点闪烁也没有。windowless,如果做不好,也是非常闪的。另外,所我了解,DirectUI是有copyright的,是个公司的产品名,不能随便叫。 腾讯公司使用这种无窗口方式,一是为了防止第三方外挂。人家自己开发自己用,当然一点问题没有。某个人离职了,还会有新来的人开发,不用担心出了问题没人管。 (25)楼主洋洋洒洒写了这么多,从你列举的诸多缺点里面我可以看出你的水平,你最多只是了解一些MFC,你可知除了MFC框架还有很多,而且更加优秀。 1:无窗口句柄只是内部的显示控件没有句柄,对这些控件的显示与否完全可以通过 一个Show方法重新进行封装,而且可控性更强 2:消息从来没有作废,每个控件也同样有自己的消息处理函数,只是我们在窗体消息循环里面把需要的消息派发给这些自定义控件就可以了 关于以上两点你可以了解一下VCL,可以说用Delphi随便拖几个控件(从TGraphicControl继承)上去就是一个 Windowless界面了。有时你甚至感觉不出来 3:如果你的程序写好了,更换界面需要花费的时间比开发时间还长,只能说这个软件架构就是一坨屎!连最简单的逻辑和界面分离都没有把握好? 4:你用过别人开发的windowless控件吗? 学习更多地东西会影响你的职业生涯吗? 5:软件的稳定和可靠性完全不是界面的事! 你还是先分清界面和逻辑功能的不同吧。 6:还是架构问题!功能层代码应该完全和界面分离,如果你采用发送消息就已经是把功能和界面绑死了! 为什么不把界面设计成实现一个接口,比如有Update() 7:这些都有成熟的机制,裁剪和坐标变化就两个函数,绘制如果想要漂亮的界面不管你采用什么方法,都要绘制的。 8: 按你这条的意思在C#,JAVA刚出来的时候我也可以这样说:全球几乎所有的软件都是使用C,C++开发的.......。 9:后期汉化..对这条:配置文件!你不是用过ini,xml吗? 对多语言的支持不仅仅是翻译一下,界面也要进行调节, 10:这条才是你真是水平! 文档/视图不是MFC的专利,这是一种架构思想,如果脱离了MFC就不能使用文档/视图架构只能说 你眼中这些技术仅仅是表面的技术,完全没有看到各种架构,各种设计的本质思想,所以你不会熟练运用它们,最后只会调用现成的方法! /////////////////////////////////////////////////// (1)DirectUI是一种技术简称,也叫windowless,不要被忽悠了。 建议考虑迅雷7的界面引擎,目前已经开放了,都可以用。 (2)迅雷7用DirectUI做出的效果就很漂亮。 (3)如果大家有兴趣,可以看看SKINSE界面库。至于SKINSE到底怎么用?我相信下载看过的人会明白!!! (4)DirectUI做出的界面效果还可以,不过自身也要有过硬的技术做基础。 (5)虽然DirectUI开发界面的效果不错,但是目前国内用DirectUI和懂DirectUI的人并不多。 (6)如果MFC足够好用,可能会有那么多UI库吗?说句不好听的,如果不是VC捆绑MFC,还会有多少人用不伦不类的垃圾MFC! /////////////////////////////////////////////////// (1)今年开始玩DirectUI,参考老外的程序,写了个DirectUI的Demo, 支持各种Layout,实现了各种基本控件(SplitBar, PictureBox, Button, Radio, CheckBox, Label, HyperLink, ProgressBar, trackBar, ListBox, Edit, ComboBox, Tab Control, Toolbar, Menu, tree),支持键盘导航,支持Tooltip,支持多语言,支持换肤,支持异形窗口,支持插件2次开发,支持Alpha通道,支持各种图像处理。 然后最近开始学WPF,学后自己的程序就不想再写了,感觉再写基于GDI的DirectUI已经没多少意义,基本上QQ的UI已是基于GDI的DirectUI的极致了。 感觉理想的DirectUI设计上可以仿WPF,底层Render方式可以切换(Direct3D, OpenGL, GDI), 支持脚本,并且跨平台,应用程序和游戏都可以用,现在我还没找到这么一套东西,不知大家对DirectUI怎么看? Demo下载:http://download.csdn.net/detail/weiym/3698407 (2)要是支持那么多功能话,那得多大,这种界面库以尽量轻量级比较好,否则和WPF又有什么区别呢。 (3)这样的东西不一定大的,比如Render方式是可插拔的,根据不同的情况加载不同Render Engine就好了。 虽说工程比较庞大,编译出的东西其实不一定大的。就像WPF,如果脱离.Net,其实也就几个DLL。 (4)WPF和DirectUI确实如出一辙啊!:区别也有些: 另外不同的是WPF的抽象更好,而且WPF/Silverlight更为轻量【当然了,排除掉.Net的部署的考虑】 大多数C++的DirectUI停留在XML配置静态UI,然后C++来实现后台逻辑。 大多数的C++的一个Xml就是一个完整的UI,不能嵌套,缺乏重用性。 当然了。。。真正写软件的时候,WPF就靠边站了。。。 Qt的QML本质也算是C++DirectUI的。 但是问题是现在C++DirectUI的方式会越来越少了。。。 Win8会更多支持HTML5,估计WPF也会被支持的很好。 ------------------------------------------------------------------------------- (5)目前开源的duilib就支持动态添加控件啊,插入一段Xml控件描述即可生成相应控件,绝不是静态UI (6)讨论DirectUI已经没有意思了,这个玩意儿已经被炒烂了,自绘而已,加上一点消息处理,没东西了。 XML描述UI更是噱头,一种配置格式而已,跟INI、对话框模板没有本质区别。再高级再动态的XML描述也摆脱不了需要指定控件位置大小的局限。唯一不需指定控件位置且全自动布局的只有HTML。 脚本就不要强求了,只是一个更具灵活性的扩展方式而已。如果在体系结构上不能整理出完整统一的对象模型,还不如不要脚本,要不然脚本编写者会不停抱怨这个功能没有、那个功能没有,底层更新代码都得累死。 硬件加速的渲染,如果没有足够的积累,还是不要轻易去碰,这是找罪受,不光是门槛太高的原因,个中滋味自己试试就知道了。这句是我最大的忠告。 动画,有一点点就可以了,没有太呆板,多了伤眼睛,我现在很烦浏览器中铺天盖地的FLASH动画。这是UI和游戏的最大区别,游戏没动画就没法玩了。好在动画门槛不高,搞点小特效还算比较容易。做个通用动画也不算太难,WPF中的通用动画技术还是很值得借鉴的,因为人家总结得非常好。 跨平台,见仁见智吧,我觉得自己没有多少发言权。定好目标客户再决定要不要跨平台。跨平台的难度不在于多平台编码经验,而是设计水平。 一家之言,我也是搞UI库的,上面的所有技术我都尝试过。不过可惜,没定好用户群,有严重的方向性错误。 (7)网上有开原的DUILib,核心的消息分发代码是类似的,你可以直接参考他的学习。 (8)现在看来WPF是最优秀的DirectUI, 他底层应该是基于D3D的。 (9)多谢忠告,个人觉得跨平台是DirectUI的优势,在windows和Mac上它或许没多少竞争优势,但是在嵌入式和手机平台开发上,DirectUI还是很有价值的。另外WPF的设计思想对于设计一套优秀的DirectUI Library 还是很有借鉴意义的。 (10)你说得对,3D的玩意儿在嵌入式可能更有市场,这也是我努力的目标。为嵌入式设备定制大量的3D特效,也不需要为PC的那些懒用户制作UI设计器了,在桌面市场做3D-UI感觉有点吃力不讨好。 (11)我在WinCE中使用DirectUI, PC机下确实意义不大,嵌入式的却比较好. (12)界面的核心永远在于布局,审美,而不在于技术,DUI已经没嚼头了。 |
windowsUI的总结
时间: 2024-10-09 01:40:22
windowsUI的总结的相关文章
WinForms界面控件初探:布局灵活、让你灵感一现的Tile Control
超乎你想象!WinForms Grid Control处理100万行数据到底有多快? WinForms界面控件初探:处理速度飞快的WinForms Data Grid(1) WinForms界面控件初探:处理速度飞快的WinForms Data Grid(2) WinForms界面控件初探:支持读写XLSx, XLS, CSV 和 TXT文件的Spreadsheet Control WinForms界面控件初探:强大的嵌入式多功能Data Editors WinForms界面控件初探:功能强大且
基于<;MediaElement>;的WPF视频播放器(带部分特效)【2】
一.前言 上回说到需要做放视频的使用向导,这两天公司里的老司机一直帮我答疑解惑,让这个任务变得挺顺的,真心感谢他们! 这次与[1]中的不同之处在于: (1)播放和暂停按钮集成在<MediaElement>的点击事件之中,点一下是播放,再点一下是暂停 (2)加入了微软官方改写的粒子特效 (3)加上了自己琢磨的按钮旋转效果,以及按钮淡出popup效果 (4)进度条改善美观 二.代码 前台: 1 <Window 2 xmlns="http://schemas.
基于<;MediaElement>;的WPF视频播放器(可拖拽进度条播放)
一.前言 前两天上峰要求做一个软件使用向导,使用WPF制作.这不,这两天从一张白纸开始学起,做一个播放演示视频的使用向导.以下是粗设计的原型代码: 二.效果图 三.代码 前台代码: 1 <Window 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
基于<;MediaElement>;的WPF视频播放器(终章)【3】
一.前言 对于<MediaElement>前两章介绍了差不多了,其实好的界面还需要UI工程师的配合,比如帮忙设计下按钮的样式等等.同样视频本身也需要吸引人,不然做的再好的播放器也没用.之后,我对代码进行了下小修改,粒子特效那部分就不再放了. 二.代码 前台代码 1 <Window 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://sche
仿LOL项目开发第四天
---恢复内容开始--- 仿LOL项目开发第四天 by草帽 上节讲了几乎所有的更新版本的逻辑,那么这节课我们来补充界面框架的搭建的讲解. 我们知道游戏中的每个界面都有自己的一个类型:比如登陆界面,创建角色界面. 既然有这么多的界面,所以呢,我们创建一个单例的UI管理器:WindowManager.cs,然后里面创建一个字典来存所有类型的界面: using UnityEngine; using System.Collections.Generic; using Game; using Game.C
WPF仿Word头部格式,涉及DEV RibbonControl,NarvbarControl,ContentPresenter,Navigation
时隔1个月,2015/06/17走进新的环境. 最近一个星期在学习仿Word菜单栏的WPF实现方式,废话不多说,先看一下效果. 打开界面后,默认选中[市场A],A对应的菜篮栏入上图, 选择[市场B]后讲改变菜单栏,和B相应的界面. 要实现上述的功能,要怎么解决? 实际上,每个界面都可以看成有三部分组成,顶部的DEV.RibbonControl,左侧的DEV.NavbarControl,和中间显示主要界面C部分. NavBarControl中包含多个NavBarItem,当切换NavBarItem
Windows8 UI MessageBox In DevExpress
// custom messagebox using System; using System.Drawing; using System.Windows.Forms; using DevExpress.XtraBars.Docking2010.Views.WindowsUI; using DevExpress.XtraBars.Docking2010.Customization; namespace StatTools { public static class MessageBoxServi
堡垒机世界的征战之尚思卓越堡垒机VS齐治堡垒机
尚思卓越堡垒机(之前行内又称"尚维堡垒机")是由尚思卓越(北京)科技有限公司研发直营品牌产品,历经10余年的研发更新,客户群体遍布各行各业,尚思卓越企业一直保有着市场优质堡垒机供应商的口碑,并有着多家忠实客户沿用产品至今,被誉为堡垒机行业的领军者.齐治堡垒机是由浙江齐治科技股份有限公司研发销售产品,自诩全世界第一台运维操作风险控制系统(堡垒机)的发明者,自言运维操作领域的创造者,在此不讨论可信度问题,但有些许言过其实成份.尚思卓越企业与齐治企业的最大区别在于,尚思卓越企业初期低估了当今