Microwindow系列(三)--开发
好好从例程看起吧,能给你很多提示, microwindow API的没nano-X的多,但已经差不多了,网上也会有搜到一些例子。例程源码在demos/mwin目录下,make后的可执行文件在bin下,中间文件在obj中,编写自己的UI程序时,要注意编译时的诸多选项,可以通过make时的日志记录来了解。其实大多都是config里的配置。同时要包含一些头文件:windows.h, wintern.h, device.h , wintools.h等,它们位于include目录下 。
例程主要是看程序的结构层次;还有包括窗口在内的各种控件的创建、使用及销毁方法。Microwindow API极其类似win32 API,消息的实现机制从表象上看也几乎没区别。Microwin API控件源码主要在mwin/winlib目录里,还有一些包含在mwin/目录下,winevent.c 、winuser.c主要是窗口消息机制的实现,以及窗口操作的实现;wingdi.c包含了底层一些绘图函数的实现。更底层的在engineer目录下,最底层的在driver里。
窗口及控件:
窗口与控件的实现,例程里很容易看明白。
控件是一种特殊的窗口,有默认的消息处理函数,你也可以自己定义控件的消息处理函数,用SetWindowLong函数改变消息处理函数地址到自定义处理函数地址。不过记得要回到默认的消息处理函数地址时需再设置回来。有些控件的实现并不是很完整的,需要自己去更改mwin目录下源码。
中文字体:
Microwindow支持中文字体,字库在font/chinese目录下,包括点阵字体和矢量字体。
对于字体的绘图文件在engine目录中。
显示Bmp:
对于bmp的支持,需要先将bmp文件转化为对应的.c文件,比如对源码make后,mwin/bmp下的bmp文件就通过convbmp转化为obj/mwin/bmp下的对应名称.c文件了,.c文件里面存放的是imagebit, 有图片内存镜像的首地址,使用时
extern MWIMAGEHDR XXXX一下利用DrawDIB函数去画就OK啦。所有的绘制工作都需要hdc的支持。
显示Jpeg:
用GdDrawImageFromFile函数支持从存储器设备加载并绘制jpeg图片,参数可设置,如果是nano-X, 改用GrDrawImageFromFile函数去绘制;绘制前MwPrepareDC(hdc);即重置一下hdc,以使绘制得到刷新。使用此函数需要libjpeg库的支持。
以上三种功能需要在config中配置好相关的支持选项。
//注:Microwindow网站: www.microwindow.org