在我发了键鼠模拟器的那个帖子后,很多人问我界面是怎么做出来的,我想既然大家对做界面那么感兴趣,那我就专门开个贴来聊一下怎么用C/C++做高大上的软件界面。当然,一个很漂亮的软件界面会让人觉得你的程序很高端,面试的时候也会给面试官一个很好的印象,但是很多人刚开始看书学C时,书上老是用printf来打印输入输出,导致很多人以为C只能在那个黑框框下用,不实用,很有很多人认为做界面只能用Java或C#,C/C++不能做界面,这是极大的误会,C/C++不仅擅长底层开发,做界面那更是小菜一碟,用C/C++做界面比Java或C#都更灵活,在我看来,只要C/C++和MFC学通了,任何界面你都做得出来,随便找一个软件,你都可以克隆出一个一模一样的界面来。不信啊?后面你就会见识到。
下面先看一个用C语言做的软件,快速窗口切换程序,这个程序是一年前写的,当时觉得Windows7的窗口切换太麻烦了,特别是那些有多个标签页的软件,每次都要在任务栏点一次,再在弹出来的窗口略缩图里再点一次,如果要经常切换窗口就会感到特别不爽,觉得微软这设计真是脑残,这个程序也很简单,就是当用户按下鼠标中键后,就弹出一个菜单来,菜单里列出了所有窗口,点一下就可以快速切换过去了。菜单界面如下图所示
这程序仅仅用到了C,所以体积很小,只有80K,占用资源也很少,其原理很简单,先用SetWindowsHookEx函数加载一个鼠标钩子来监视鼠标中键的按下动作,一旦中键按下,就在光标的旁边用CreateWindow函数创建一个窗口,然后在窗口里创建多个按钮,你可以看到,在按钮里既有图标,又有标题,这种按钮是不是很酷,其实实现很简单,就调用DrawIcon()和SetWindowText()2个API就可以了。感兴趣的可以去我的博客下载程序源代码,可能有人会说这太小儿科了,确实,这个程序界面比较简单,没什么好多讲的,那什么软件的界面比较高大上呢,迅雷看看播放器,这个怎么样,够高大上吧,几亿人都在用呢,但是我告诉你,我要克隆出一个跟它一模一样的程序界面来,那也很简单,当然我只是实现它的界面,它的播放下载功能我可不实现,最终程序的界面效果如下图所示
是不是一模一样,连光标移到按钮上的发光效果也跟原版程序一样,这里面最难实现应该是它的进度条了,一边蓝色一边灰色可费了我一定时间,程序是用C++和MFC做的,代码会比窗口切换程序复杂一点。要做这样的界面也不能一蹴而就,首先你要懂做自绘风格的按钮,下面这个程序演示了如何创建各种形状的按钮
它的原理就是先从CButton派生出一个子类CRoundButton2,然后在CRoundButton2类的DrawItem()把按钮画上去,也不难,具体实现可以参考源代码。正所谓万丈高楼平地起,所有看起来很漂亮的界面都是由一些比较简单的技术堆砌而成的,下面这个例子程序则教你如何用一些比较简单的代码对窗口做出不同的显示效果,界面有3个按钮,提供了3种不同的效果,如下图所示。
怎么样,看完以上例子,谁还敢说C/C++就只能小黑框,谁还敢说C/C++不能做界面,以后谁还敢这么说你就跟他急。对以上程序感兴趣的,可以到我的博客去下载源代码。高手就不用看了,免得你们看了又要喷,这不是给你们看的,呵呵。
想把源码传到百度网盘上的,可是百度网盘可真是垃圾啊,怎么传都传不上去。