首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

windowless的致命缺点,该如何解决

2012-01-21 
windowless的致命缺点小弟最近研究界面实现技术,过年也没闲着,google了整个网络。弄界面也弄了几年了,做比

windowless的致命缺点
小弟最近研究界面实现技术,过年也没闲着,google了整个网络。弄界面也弄了几年了,做比较炫的界面,也没什么问题。最近公司年后要启动一个项目,项目非常复杂(一套卖几百万),要使用文档/视图结构,但一定要做深层次美化。以前一直用mfc做界面,使用gdi或gdi+贴图,用ini或xml配置界面。常用控件的美化也实现了好几年了,都比较稳定,个别特殊控件,实现一下也没什么问题,由于这个项目周期很长(两年多),正好借新项目,好好总结一下目前比较常见的界面开发技术。今天先总结一下windowless的致命缺点,过两天总结它的优点,和其它技术的优缺点。再提一句,我们的项目是使用wpf开发,也是windowless,但与我下面所说的windowless是两回事。

windowless或者称handleless,也就是无句柄窗口,在设计和实现的时候,每个控件都自己实现,最后画到父窗口中。另一个伪windowless是用标准mfc控件,然后通过hook或其它远程线程注入等技术,让spy++等软件,看不到窗口句柄。这主要是为了防止盗号木马通过edit窗口句柄,盗取用户名和密码。好了,费话少说,下面是小弟总结的windowless的缺点,如果要使用这类界面开发技术,要么有源代码,要么是自己公司实现的,否则风险非常大。

1、无窗口句柄,所有您以前关于“窗口”概念的知识都白学了。您将不可能使用::ShowWindow(hWnd, SW_HIDE)来隐藏一个窗口,也不能使用::MoveWindow来移动一个窗口。
2、所有您以前学习的关于“消息”的知识也作废了。您不可能使用::SendMessage(m_hWnd, WM_SETTEXT, 0, (LPARAM)_T("Hello world"));来设置窗口标题。
3、如果您的程序已经写好,需要花费比开发程序还要长的时间来移值到DirectUI界面上。
4、重新学习一套系统接口和概念,如果不是国际知名的大公司的windowless产品、这些知识对您的职业生涯没有太多好处,反而浪费了您的时间。
5、如果不是国际知名公司的产品,产品的稳定性和可发展性无法保证。
6、如果您的功能层代码需要与UI层交互,例如,要向UI窗口发送消息,那么您的功能层代码也要做相应的修改,所以windowless类的界面库,不仅仅影响UI层,还影响功能层。
7、窗口的剪裁、激活、绘制、消息循环等等全部需要模拟。
8、除了极个别程序,全球几乎所有软件产品都使用win32布局方式,无论在技术储备,兼容性和获得帮助方面,标准窗口观念都有得天独厚的优势。
9、无法对编译好的exe进行后期汉化、编写插件等常规操作。运行中的程序也无法响应其它程序发来的标准消息,例如隐藏控件、设置控件文本等。
10、不支持MFC的文档/视图框架。
综上、windowless比传统win32窗口树形结构有很多局限性和不确定性。

[解决办法]

探讨
引用:
做绚丽界面一律用WPF,做一般绚丽界面用WinForm,做windows标准界面用MFC

WPF也有个致命缺点,就是要.net framework支持。不过,我们的产品是专业产品,最终文件几百MB,也不差多带一个.net framework发布。

[解决办法]
“致命”、“缺点”形容太夸张了,对谁致命?对谁是缺点?我看是对外挂工作者致命,对想要又不想学的懒虫是缺点,对钱是缺点。任何一种新技术的出现本身就是一个缺点——必须付出高昂的学习代价。只要是编程的,不管它用的技术和语言是高级还是低级,任何一行代码的背后都包含着很多需要学习的内容,语言、语法、平台、API、库、IDE、调试……缺了任何一个,恐怕一句代码也写不出来。同一种技术,同一种语言,同一种功能,有人会觉得太难,有人信手拈来,区别只在于积累的经验。经验怎么来?学习。老板喜欢什么样的员工?有经验的,最起码爱学习的。学习需要时间,把学习当作浪费时间的人,可能永远只能写 printf("hello world"),如何积累经验? 也许不是楼主的本意,但楼主的评论确实让人感受到这样的观点:学习是在浪费时间。

很多东西都白学了,这句话也夸张。几个API用不了就算白学?是不是每个应用程序都应该用上这些API?windowless容器窗口也必须有句柄吧,也需要消息循环才能让“控件”运作吧,这些深层一点的内容可是没有任何区别的。

我觉得对任何人来说,能增加我经验的东西都是好东西,不管它是不是成功的东西。
[解决办法]
LZ踩到你尾巴了??哪有那么多隐晦的含义让你愤怒,搞的语气跟XX似的!!!只不过是LZ自身的总结而已,又没有误导谁,人说了的“今天先总结一下windowless的致命缺点,过两天总结它的优点,和其它技术的优缺点。”

探讨

“致命”、“缺点”形容太夸张了,对谁致命?对谁是缺点?我看是对外挂工作者致命,对想要又不想学的懒虫是缺点,对钱是缺点。任何一种新技术的出现本身就是一个缺点——必须付出高昂的学习代价。只要是编程的,不管它用的技术和语言是高级还是低级,任何一行代码的背后都包含着很多需要学习的内容,语言、语法、平台、API、库、IDE、调试……缺了任何一个,恐怕一句代码也写不出来。同一种技术,同一种语言,同一种功能,……

热点排行