归档 2010年4月10日

最后更新于 .

然后最痛苦的时候来了,尽管已经了解并掌握了几乎所有必需的知识,对于一个任务,我们能从功能上比较完美的实现,但这个时候,我们已经站上一个高度,追求完美的品质告诉我们一定要把界面做得尽量美观,让人过目难忘或者心情舒适。但开发过程中我们发现这是一个很痛苦的过程,一切并不像想象中的那么简单,自己做出来的界面经常会让自己反胃!我写过小游戏,写过播放器,但自己几乎不会去用它们,为什么?就是因为做出来的界面让自己实在难以提起兴趣,它们跟那些软件相比,差得太远。

我们很快就发现这个阶段遇到的困难,跟以前不一样。以前的难题可以通过经验和知识来克服,这次却不行了。我们之所以感到痛苦而不是困惑,就是因为问题不是出在专业技能上,这是审美的问题,这是大多数程序员缺乏、甚至是匮乏的素质。在程序员的世界里,大家都很容易陷入代码的泥淖而不自觉,这对于后台开发人员无所谓,但对于一名前台开发人员,一名从事界面开发的专业人来说,审美素质是很重要的,当这些人沉浸到代码和功能中时,那就是一场灾难!在界面的开发过程中,我们必须拿出大量时间来思考关于美学的东西,尽管这会中断你的工作,对于敲代码的程序员来说这很困难的,因为一旦开始了Programming,直到遇到难题为止,高效的节奏总是让人难以停下来。但适当的时候我们还是应该停下来,到了一定阶段,只有思考才可以让自己继续提高。

忘了从什么时候开始,在写界面的代码之前我总是喜欢先设计一下。当然我并不是那么专业的美工,我只是拿个画图工具把界面勾画一下,这里用什么控件,那里用什么控件,颜色该如何搭配……我们应该通过这个步骤,尽量把自己的美学融入设计之中,这样才能减少开发过程中的困惑和中断 ...

最后更新于 .

经过在第一阶段的痛苦磨炼,我们总算是打下了比较坚固的基础,可以快速的开发各种常见的窗口程序,各种控件的应用比较熟练,也能利用消息机制完成各种需要的功能。但一个完整的窗口程序不仅仅是由一堆简单的控件堆砌而成,在很多场合下,控件的事件响应函数需要调用具体的、功能性的代码。打个比方,尽管你可以使用如CPicture这些MFC提供的控件为你的窗口添加一些图片,但老实说,你并不知道这个控件中到底是怎么添加图片的,我发现,大多数情况下我们都是在窗口的属性编辑器里添加自己需要的属性,很少自己手动的添加一些功能性的代码。这个阶段我们的程序的一个明显的特点就是没有属于自己的控件,我们从来不会用面向对象的方式来开发自己的控件。

因为这样,我们可以做的事情很少。例如,窗口程序中,最常见的就是添加各种图片元素,复杂一些的如flash,此外还有一些其他的多媒体元素,如让窗口播放视频,显示OpenGL等的3D实时渲染结果,自定义绘制各种图表等。如果不能做到这些,我觉得就算不上真正懂了界面开发的技术,因为提到的所有这些,都关系到界面开发中最重要的技术之一,那就是GDI。GDI是每一个窗口程序都不可或缺的技术和元素,没有它,你的窗口不免功能单调、有形无神。

我曾在这些问题前徘徊了很久,尽管有这样或那样的教程,但大多杂乱无章,而且网上的资料看多了你就会发现几乎所有的教程追根朔源都引自有限的几个版本,就是这几个版本,也只是机械的调用API,你拿来后经常会出错,往往是因为这些作者也没有弄透彻。

学到了这里,去理解GDI的技术,就是迫在眉睫的需要了,如果不突破GDI的封锁,3D渲染输出、图表绘制、游戏开发这些复杂功能我们永远也理解不了,我们也永远不会知道各种不同格式图片之间的区别,例如bmp图片是用的或运算,而png图片用的是与运算 ...

最后更新于 .

一直纠结于究竟该用什么标题:总结其实说不上的,毕竟自己经验也不怎么丰富,充其量也就是一小结;换用感悟之类的也不大合适,这会让人以为我故作老成、经验丰富,诱骗大家,知根知底的朋友们当然很容易就揭穿我了。想来想去,虽然以后还有很长的路要走,但就暂且用“总结”来回顾一下自己做界面开发的一些经验和心得吧。
第一语言是C++,所以当初选择学习MFC似乎是理所当然的了。这是我最开始上网找资料以决定学什么时认定的道理,那时以为这是当然的嘛,可在过去这么长时间后,回头想想,甚是为自己的盲目而汗颜。我不是说MFC不好,在我看来,MFC是十分强大而优秀的,因此才会成为VC开发人员的首选。它的框架之庞大复杂,虽然使得其功能强大,而且拓展性强,但对于初学者来说实在太过晦涩,其架构和模版在简单明了的windows程序基础上加入了大量设计模式和其他常见的界面开发理念,如所见即所得和文档/视图模型,而这些东西,对于初学者来说是很难理解的。初学者固然可以通过模版向导来生成一个程序框架,也可以在窗口设计器里用鼠标拖拽出你的窗体,但除此之外呢?在相当长一段时间里,我只知道该怎么用MFC,但不知道为什么,经常性的觉得它的模版的架构是莫名其妙。
因为经常性的要用到,所以我经常为给程序加入某个功能而到处查资料,实现后却也只是一知半解,即使在我浏览过几遍精通MFC等书,依然无法为我答疑解惑,即使是最权威的《mfc windows程序设计》一书也是如此。我一度怀疑自己的学习方法,后来知道,问题的根本不是学习方法,而是学习顺序。提到的这些书 ...

昨天

2010年4月8日

明天

2010年4月11日

归档