大家都看到一些真实仪器仪表的界面,如汽车仪表盘、示波器等,这些界面在软件(Windows平台下MFC编程)上,是如何实现的呢?
首先MFC仅提供了一些基本的对话框、控件界面,而且它们都是标准灰色的,想要实现真实的仪器仪表界面,最基本的思路就是“贴图”。照一张真实的照片,然后使用OnEraseBkgnd加载到对话框的背景中去。这部分内容请搜索“OnEraseBkgnd”、“WM_ERASEBKGND”,网上有很多关于背景贴图的资料。
下来就是一些简单的控制界面,这里介绍的是【按钮】和【分组框】,例如下面的界面:
在这里下载程序:http://download.csdn.net/detail/dijkstar/7432427
【按钮】是基于网上的XPButton.cpp修改而来(大幅删除原有代码),能从源程序中看出,实现的思路很简单,响应鼠标移动在按钮上面、离开按钮、及获得焦点时分别在函数DrawItem内部使用黑色、绿色Brush,文字做DC操作;
【分组框】groupbox是从CStatic派生而来,实现思路更简单,内部只处理了一个OnPaint消息:画一个绿色矩形边框,在左上角写文字。
(注意:关联的【分组框】在测试Dlg中的拖放控件是一个静态文本控件,而不是一个groupbox控件。如果拖放一个groupbox时,当在dlg界面上敲入Tab键,会导致左上角的原始颜色的文字重回,不知如何解决?二是关联了静态文本控件,再向里面拖放按钮时,会被隐藏,最简单的解决办法按【ctrl+D】设置tab顺序,将按钮的tab顺序大于后面的静态文本框就行了。)
这个程序,提供了一个简单的思路,用来仿真绘制一些简单的仪器控制界面。