文档库 最新最全的文档下载
当前位置:文档库 › MINIGUI学习方法

MINIGUI学习方法

MINIGUI学习方法
MINIGUI学习方法

最近在学习minigui,将一些分析的结果贴出来供大家参考,同时欢迎大家的指正。图形编程中,窗口是一个重要的概念,窗口其实是一个矩形框,应用程序可以使用其从而达到输出结果和接受用户输入的效果。窗口系统(window system)界于操作系统层次之上,它是一个软件系统,负责把显示屏幕分隔为不同的部分来帮助用户管理和控制不同的显示环境,它提供基于窗口的工作模式。在linux上面,x就是一个典型的窗口系统吧。

在minigui中有三种窗口类型:主窗口,对话框和控件窗口。主窗口作为应用程序的主界面或开始界面。子窗口通常是控件窗口,也可以是自定义窗口类,这里的控件窗口说白了就是一些窗口上面的控件,比如按钮,编辑框等。对话框其实就是主窗口,只不过一般为了完成特殊用途,所以在此加以区分。

下面我们一起来看看这三种窗口类型的创建吧。首先看createmainwindow函数,它创建一个主窗口:由于代码比较长,这里就不全部贴出了,主要是说说关键的部分。

createmainwindow函数通过接受pmainwincreate类型的参数而创建一个窗口,并返回其句柄。关于pmainwincreate结构的具体成员变量,大家可以去查看源码。下面主要对函数内部做个简单介绍。

1. 声明一个pmainwin类型,并分配空间,该变量用来存放创建的主窗口的信息

2. 说下面的代码之前,先说说托管(hosting)窗口和被托管(hosted)窗口吧。我们知道 minigui内部实现了消息机制,即当有键盘输入事件发生时,就往消息队列中发送键盘消息,而一般是主窗口会不停的从消息队列中取出消息来处理,或者自己响应,或者忽略,或者派发给其他的窗口。那么这里就有一个问题,消息队列是每个主窗口都有一个呢,还是所有的主窗口都使用同一个消息队列?在minigui中有个特殊的主窗口hwnd_desktop,它是所有窗口的父窗口,直观的说就是整个桌面的窗口。当一个主窗口在创建的时候,可以指定新建一个消息队列,也可以使用别的主窗口的消息队列,如果是后者,假设主窗口a在创建时指定使用主窗口b的消息队列,那么a就被称为被托管窗口,而b则被称为托管窗口。所以很明显createinfo.hhosting就是用来指明托管窗口的。来看下面的代码,这里对minigui 的两种运行模式进行了区分,1-26行是minigui-threads模式,在这种模式下,如果托管窗口为hwnd_desktop,则判断当前线程是否已经有了消息队列,如果没有则掉initthreadinfo 来新建一个消息队列,否则使用已经有的消息队列;如果托管窗口不为hwnd_desktop,则返回hhosting所在的主窗口的消息队列。这就保证了同一个线程的所有窗口使用同一个消息队列。27-31行是非minigui-threads模式

下,新的主窗口使用hwnd_desktop的消息队列,托管主窗口如果为空则使用hwnd_desktop,否则设置为phosting所在的主窗口。

3. 下面的几行是对pwin进行初始化的操作,第1行赋值消息处理回调函数。第9行,

初始化pzordernode成员

4. 初始化结束之后,就开始发送消息通知自身来真正的绘制窗口了。1-4行发送本窗口

的msg_sizechanging和msg_changesize消息,会调用本窗口消息回调函数中的相应处理部分。第6行是发送msg_addnewmainwin消息给hwnd_desktop窗口,hwnd_desktop窗口主要负责初始化clip区和invalid区,并且把当前窗口添加到sg_mainwinzorder链表里,这个链表记录的是所有窗口的叠加顺序,在显示和隐藏窗口的时候,叠加顺序很重要,它会决定屏幕上哪些窗口会受影响而需要重绘。第9行发送msg_create消息给窗口,窗口接受到此消息一般进行子窗口的初始化和创建,如果创建失败了,则通知hwnd_desktop窗口销毁该主窗口。

接下来我们看对话框的创建过程,对话框分为模态和非模态对话框。非模态对话框的创建过程和主窗口的创建过程差不多,其中也调用了createmainwindow函数,之后还调用了createwindowex创建对话框上的控件。模态对话框就是显示之后,用户不能再切换到其他主

窗口进行工作的对话框,而只能在关闭之后,才能使用其他的主窗口,通过dialogboxindirectparam创建,一开始的步骤与非模态对话框类似,以下的代码是其不同的部分:第7行,howner是待创建对话框的托管主窗口,这里其实是把它disable掉了。第11行是处理msg_initdialog消息。第18-21行,是消息处理的循环机制,这里可以看到这就是为什么模态对话框一定要等到关闭之后,才可以使用其它的主窗口,这里还需要注意一点,由于是从对话框的托管主窗口是hwnd_desktop窗口,因此他们共用一个消息队列,此时,对话框可能接受到发送给托管主窗口的消息,而由于在第7行中已经将托管主窗口的dwstyle 设置为ws_disable了,因此在这些消息处理流程里面可以做相应的处理(例如当窗口被设置为ws_disable时,忽略该消息)。25-28行,当窗口关闭时,进行的收尾工作。第31行enable 托管主窗口。第23行判断了当前对话框是否是激活窗口,如果是的话,当它关闭时,它的托管主窗口应该被激活(34-35l)。篇二:minigui开发中遇到的问题及解决方法

minigui开发中遇到的问题及解决方法

minigui是基于消息机制的开发工具,由于不具备可视化性,这就要求开发人员熟悉其控件及消息机制。首先要阅读其中的开发文档如:

minigui-user-manual.pdf(了解其配置、编译及安装方法);miniguitechwhitepaper-2.0-4c.pdf(了解控件及其用途);

minigui-prog-guide-v2.0-4c.pdf(具体控件属性、消息等);

另外,给出了控件的示例,可以编译学习,示例程序一般在mg-samples-2.0.4文件夹中。

在开发中遇到了一些问题,折腾了半天最后才发现是minigui的问题。程序员开发时大多数是边做边学的,遇到问题再查找解决方法,这样印象更深刻。下面把经常遇到,甚至是低级幼稚的问题总结一下,做个记录。

1、不想修改的编辑框仍可以输入或输入的一个字符却显示两个等;

大多数可编辑的控件都有readonly属性(不同控件前缀可能不同),该属性决定编辑框为只读属性,用户不能修改编辑框中的内容,但插入符可见,因此,如果不想让编辑框可编辑,加上此属性就ok了。

2、编辑框上不该有光标闪烁时,却总是会闪烁;

minigui有自己的消息循环机制,常用的如msg_paint,用于屏幕输出。一般有以下情况时系统会收到msg_paint消息:

①用户移动窗口或显示窗口时;

②用invalidaterect更新窗口的无效区域;

③调用updatewindow重绘窗口;

④覆盖程序窗口的对话框或消息框被消除;

⑤下拉或弹出菜单被消除;

出现闪烁光标就要检查程序中是否有以上情况发生;

3、如何修改控件的背景颜色;

minigui各控件的背景颜色是已经在minigui.cfg的windowelementcolors段设置好的。每个控件都会有以register开头的函数,根据该函数中wndclass.ibkcolor对应的颜色序号在minigui.cfg中查找进行修改即可。但这种更改是全局性的,如果只是临时更改可用setwindowbkcolor和setwindowelementcolorex来设置背景色和前景色。

4、listview创建及但不显示问题;

由于listview是minigui的扩展功能,这样在配置时要把ext lib中的listview control 选中,具体:

①在libminigui-2.0.4-linux下执行make menuconfig,选中ext library options

中的listview control,编译,修改makefile文件,把ext lib下的文件编译进去(一般

情况下makefile已经包含了),并保证已经把编译好的libmgext-2.0.so.4.0.0拷贝到你的

文件系统的 lib下;

②在工程中如s7000的miniguimain中增加

if (!initminiguiext()) return 2;

③这样就可以使用这个控件了。

5、再次查看listview内容时,第一行数据不显示;

用listview控件时,先把控件中的内容删除即发送lvm_delallitem,然后再添加数据,

以免数据显示混乱;

6、button上不能同时显示文字和图片;

在button.c中画图和画字是在btnpaintcontent中,而bs_bitmap和bs_text同在同一

个switch,只能画一种情况。解决方法:把图和字放在不同的函数中,并且在画字的函数中

不进行switch,否则,仍画不出字;

7、button上的图片不能满button显示

修改draw_bitmap_button函数中关于画图时图片的位置处理;

8、skin实现chkbutton动态换图

skin源码功能简单,不能实现动态更换字的颜色,字体,换图等,一方面是skin结构

问题,一方面是缺少相应功能,为了实现动态换图,进行了如下更改,可见skin_s7000宏。

⑴ chkbutton文件修改

增加si_chkbutton_t,根据flag取相应的bmp_index;

增加decl_button,取si_chkbutton_t类型的type_data;

chkbutton_draw_bg:改变画图方式,根据item的大小位置进行缩放。增加

chkbutton_get_bmp获取bmp_index;

增加chkbutton_set_bmp设置需要的bmp;

chkbutton_ops中增加chkbutton_get_bmp和chkbutton_set_bmp;

⑵ skin文件修改

增加skin_get_chkbt_bmp获取bmp_index;

增加skin_set_chkbt_bmp设置bmp_index;

由于refresh_item刷新的是item的rc_hittest,根据需要修改成刷新item大小的区

域;

9、skin修改nrmlabel背景图和字的颜色

⑴ skin.h文件修改

增加si_labelbmp_t,两个bmpindex;

si_nrmlabel_t增加si_labelbmp_t,flag(color)和bmp_flag。根据flag和bmp_flag

的值设置相应的color和bmp_index;

⑵ skin.c文件修改

增加skin_get_label_color获取bmp_index;

增加skin_set_label_color设置bmp_index和color,根据flag和bmp_flag的值设置

相应的color和bmp_index;

由于refresh_item刷新的是item的rc_hittest,根据需要修改成刷新item大小的区

域;

⑶ label.c文件修改

set_label:增加根据flag和bmp_flag的值设置相应的color和bmp_index;

nrmlabel_ops中增加nrmlabel_draw_bg,用于画图和画字;

去掉nrmlabel_draw_attached的调用;篇三:minigui常见问题

minigui常见问

题 ............................................................................. .. (2)

1、在运行mginit时,出现错

误 ............................................................................. . (2)

3、createwindow()创建一个控

件 ............................................................................. .. (3)

4、如何编写一个

configure.in ................................................................... (3)

5、怎样对minigui进行裁

剪 ............................................................................. . (3)

6、为什么运行mginit后,我的机子好象死

掉 ............................................................................. . (3)

7、也问minigui.cfg(和触摸屏有

关) ........................................................................... .. (4)

8、如何让我们自己的应用程序在启动mginit后自动执

行 .............................................................................

(4)

9、配置minigui时还有哪里需要disable或enable

呢? ........................................................................... .. (4)

10、怎样设置设置单行编辑框中光标的位

置 ............................................................................. (5)

11、在静态文本控件中我如何设置文字颜

色 ............................................................................. . (6)

12、我也在写软键盘,设计特征是这样

的 ............................................................................. . (6)

13、为什么getmenuiteminfo()这个函数总是没法用

呀? ...........................................................................

.. 38

14、如何在minigui-lite 当中建立多个主窗口(再问多个主窗口会是这样

吗) (40)

15、如何用bitblt显示位

图 ............................................................................. (41)

16、如何入手学

习 ............................................................................. (41)

17、如何参与minigui 的开

发 ............................................................................. . (45)

18、应用程序主窗口的句柄如何获

取 ............................................................................. . (46)

19、怎么让主窗体是一个对话

框 ............................................................................. (46)

20、关于消息循环的问

题 ............................................................................. (46)

21、关于定时器的一个问

题 ............................................................................. .. (47)

22、关于openaboutdialog()函

数 ............................................................................. .. (47)

23、step1问

题 ............................................................................. (48)

24、minigui消息循环的问

题 ............................................................................. . (48)

25、minigui的基本原

理 ............................................................................. . (50)

26、控件显示在图片的上面的问

题 ............................................................................. .. (50)

27、如何从minigui 切换到其它控制

台 ............................................................................. . (52)

28、我从未安装过minigui。要安装,需要下载哪些软件

包? (52)

minigui常见问题

1、在运行mginit时,出现错误

问:error in step 2,there is already an instance of mginit initgui failure when using /usr/local/etc/minigui.cfg as cfg file.

我ps时,看不到这个进程.

如何解决?谢谢.

答:删除 /var/tmp/m* 文件,再试试

id是idc_test 在dialopro消息处理里面

switch (wparam)

{.....

case idc_test:

textout(hdc_screen,10,10,test ok?); break;

.......

}

始终不能显示我的test ok 字符,可是同样的button,radio button 却可以得到消息

为什么?

wparam = makelong(id, nc);

要正确处理从控件发送到其主窗口的通知消息,就要先弄清楚是

哪个控件发出来的通知消息,然后搞清楚是什么通知消息:

switch (message) {

{

int id = loword (wparam);

int nc = hiword (wparam); if (id == idc_control && nc == nc_click) ...

}

}

3、createwindow()创建一个控件

问:我的方法是用movewindow(hwnd,x,y,width,height,true),在控件窗口过程中

msg_create消息分支中调用,再调用sendasyncmessage(hwnd,msg_paint,0,0),

使控件重绘,这样做有个bug,在mde环境中我切到其他应用程序使比如虚拟桌面,

在切换回原应用程序使控间没有重绘,依旧是一个点,为什么呢?

斑竹,这个问题我想和好久了,你能帮我吗?谢谢

答:应该避免在 msg_create 当中调用 movewindow 函数,

你可以参考 spinbox 控件的实现,处理 msg_size 等消息。

在窗口正常建立之后,才能调用 movewindow,而且也没有

必要显式调用 sendasy.... 函数。

4、如何编写一个configure.in

问:我在使用linux时,由于项目的需要,我们的minigui要生成一个可执行文件,但

要有多个。

c文件,我在阅读了autoconf后,仍没头绪。请问我该如何编写一个configure.in,可

生成一个可执行文件,要求该项目中有至少俩个以上的。c文件。

答:还记得“minigui用户”版中的那个 hello, world! 示例程序吗?

在 makefile.am 中含有 hello.c 的那行,以次将你的源文件列出来就行了。

中间用空格分开。当然,其它相关的东西也要一并修改一下。

其实,你还可以参考 mde 的东西,照猫画虎总是可以的。

5、怎样对minigui进行裁剪

问:现在的minigui1.0对我来说,显得太大了一点。我想对minigui下的记事本进行功

能扩充。

在满足这个要求的前提下,怎样将minigui裁到最小。我是一个新手,请各位高手多多

指教。

答:请看“minigui 用户”的精华区。

6、为什么运行mginit后,我的机子好象死掉

问:为什么运行mginit后,我的机子好象死掉,只是一个绿屏,按其他键也无反映,

也不能切换到其他控制台上。按ctrl+alt+esc会有一个弹出菜单。什么也不能用,也退

不出去答1:你是试试ctrl+esc和单独的ctrl 你的vcongui好像有问题

答2:分辨率太低了吧。你调整一下源代码,就可以了。

不过,新的版本(1.1.0pre1)和新的演示(mde)

能够自动根据分辨率调整,你可以试试新版本。

7、也问minigui.cfg(和触摸屏有关)

问:minigui.cfg原文件中有这样的定义:

mdev=mouse

mtype=ps2 注释掉不行,怎么改呢?(我使用触摸屏)

答:注意,minigui 通过采用不同的 ial 引擎来支持不同平台上的输入设备。

如果你用的是触摸屏,则需要给自己的触摸屏编写一个 ial 引擎,

就像 src/ial/ 目录下的 ads、ipaq、vr4181 等一样,然后在

/etc/minigui.cfg 中指定你 ial 引擎:

ial_engine=yourengine mdev 和 mtype 是 native ial engine 用来支持 pc 上的输入设备的。

对嵌入式系统没有意义。

8、如何让我们自己的应用程序在启动mginit后自动执行

问:尽管版主说,数据存储方式应该不会成为问题,但是我不放心把所有涉及读word

的地方都倒换过来,借用helio.c作为我们的输入引擎,mginit终于可以正常运行在目标

板上(没有鼠标显示)。但是mginit只是一个服务器,如何让我们自己的应用程序在启动

mginit后自动执行(类似批处理),因为无键盘可输入。

第二触摸屏上没有显示鼠标箭头,试着在配置时去掉disable-cursor,则在运行时初始

化鼠标错。答1:我想起来了,数据存储方式应该会影响文件的读写功能。

比如对 bmp、cursor、icon,以及 font 等的装载功能。

而程序内部的东西,则应该不会受到影响。

启动 mginit 之后,你可以 fork 并 exec 一个客户程序。

初始化鼠标错误,可能和鼠标资源有关。

答2:看来需要在所有涉及到文件读写的地方添加条件编译,

以便支持具有不同字节顺序的系统。

等 1.1.0pre2 版本吧。呵呵。

9、配置minigui时还有哪里需要disable或enable呢?

问:现在minigui提供的demo都已用ppc_8xx-gcc编译通过,但运行不起来,报告如下

错误: cant open /dev/tty: device not configured gal: init gal engine failure. error in step 3: can not initialize graphics engine!

initialize minigui failure when using /etc/minigui.cfg as cfg file 我的目标板是一个嵌入式平台,没有键盘,没有鼠标,只有一个触摸屏。

在配置minigui时还有哪里需要disable或enable呢?

答:一般而言,要做如下几项工作:

1. 如果是 1.0.07 以前的版本,请编辑 src/gal/native.h 文件,

将 havetextmode 设置为 0。同时使用 --enable-purefbgfx 选项配置。

2. 如果是 1.0.07 以后的版本,--enable-purefbgfx 就够了。

3. 禁止 native ial engine:--disable-nativeial。

4. 编写自己的 ial engine,并打开。比如,如果你的系统是 ipaq,则可以直接

使用 1.0.07 版本中的 ial engine,即使用 --enable-ipaqial。

5. 编辑 /etc/minigui.cfg,指定 ial_engine 为自己的引擎名称。

6. 关闭或者打开其他选项。

比如,针对 ipaq 的配置命令可以是:

./configure --prefix=/home/projects/minigui-ipaq-bin/ \ --disable-debug \

--disable-static \

--enable-purefbgfx \

--enable-nativegal \

--enable-ipaqial \

--disable-nativeial \

--disable-pcxsupport \

--disable-lbmsupport \

--disable-tgasupport \

--disable-jpgsupport \

--disable-pngsupport \

--disable-vbfsupport \

--disable-movewindowbymouse \ --disable-cursor \

--disable-imegb2312 \

--disable-imegb2312pinyin \ --disable-savebitmap \

--disable-savescreen \

--disable-aboutdlg \

--disable-ext-fullgif \

--enable-tinyscreen 、怎样设置设置单行编辑框中光标的位置

问:能否设置单行编辑框中光标的位置,怎样设置?

答:edit 控件的功能和接口还不完善呢。

许多东西都还没有实现,比如恢复、选中等等。

按照设计,插入符位置的修改是通过发送 em_scrollcaret 消息实现的。实现其他一些功能可能比较困难,但实现

但实现一个 em_scrollcaret 消息的处理应该不是很难。

你能不能实现这个功能?

可以参考 src/control/edit.c 中 msg_keydown 和 msg_lbuttondown 消息的处理。

10篇四:学习minigui之多线程机制

minigui在2.0版本之后,有三种运行模式minigui-threads,minigui-processes和minigui-standalone。说这些概念之前,我们先来谈谈另外一些很重要的概念,或许对理解上述运行模式有所帮助。请务必耐心看完,因为理论是实践的基础。

gui(graphical user interface):是用户接口(ui)的一种,提供了用户与电子设备诸如计算机,手持设备的交互。

窗口系统(window system or windowing system):是gui的一部分,提供了对实现窗口管理器的支持,以及对图形硬件,鼠标键盘的基本支持。鼠标光标也是由窗口系统绘制的。例如qtopia,x window system,y window system,minigui等。

窗口管理器(window manager):计算机软件,在一个gui的窗口系统中控制窗口的位置和外观,各个窗口的叠加顺序等。它们与下层的窗口系统一起提供对图形,点设备,和键盘的支持,它们通常被实现成使用widget toolkit来创建。例如kwin,twm,metacity等。桌面环境(desktop environment):指gui的一种风格,典型地由图标,窗口,工具栏,文件夹,墙纸和桌面部件组成。提供桌面环境的软件可能也提供了拖放(drag and drop)功能。例如:gnome,kde,xfce等。

部件工具链(widget toolkit):一个部件的集合用来设计guis应用程序。通常由操作系统,窗口系统或窗口管理器提供一组api,供应用程序访问api来使用部件。比如qt,gtk+等。

例如,在x窗口系统中,kde是桌面环境,而x窗口管理器可以是kde提供的kwin。kde 桌面环境是基于qt/x11 toolkit开发的。

在minigui中,图形抽象层(gal)干了与图形系统一样的事情,还有一个称为desktop 的窗口管理器。控件与整体框架构成了一套完整的桌面环境。

先将上面的内容暂时搁置,下面介绍一下三种运行模式,

1. minigui-threads。在这种模式下,minigui本身运行在线程模式下,在启动之初,

调用systemthreads函数启动了desktop、parsor和timer三个线程。desktop用于管理 minigui 窗口中的所有主窗口,包括建立、销毁、显示、隐藏、修改z-order、获得输入焦点等等。parsor 线程用来从ial中收集鼠标和键盘事件,并将收集到的事件转换为消息而邮寄给desktop窗口管理器。timer 线程用来触发定时器事件。该线程启动时首先设置 linux 定时器,然后等待 desktop 线程的结束,即处于休眠状态。当接收到 sigalrm 信号时,该线程处理该信号并向 desktop 服务器发送定时器消息。当 desktop 接收到定时器消息时,desktop 会查看当前窗口的定时器列表,如果某个定时器过期,则会向该定时器所属的窗口发送定时器消息。

你可以新建一个线程来创建一个窗口,也可以在同一个线程内创建多个窗口。

刚说了窗口之间的叠加是由窗口管理器负责的,因此窗口的创建和销毁应该通知窗口,因此在窗口被创建时,传递msg_addnewmainwin给desktop窗口管理器,这个操作是通过消息队列实现的。又如,parsor线程检测到了键盘消息之后,会发一个消息到desktop的消息队列中,desktop从消息队列中取出该消息,并放到当前活动窗口(__mg_active_mainwnd)的消息队列中,__mg_active_mainwnd窗口就可以处理键盘消息了。由此可见,desktop窗口管理器可以看作一个服务器,而普通的窗口线程可以看作客户端,这种称之为微客户/服务器结构,因为客户和服务器是在同一进程中的不同线程,因此是微客户/服务器。由此可见你创建的窗口与窗口管理器在不

同的线程中。窗口管理器由全局变量__mg_desktop引用,因此在一个客户端线程里,可以做到向窗口管理器发送消息。

2. minigui-processes。在这种模式下,每个minigui程序都是一个独立的进程,每个

进程可以创建多个窗口。这也就意味着,作为服务器的窗口管理器进程必须作为服务器

进程运行,而其他窗口作为客户端进程运行。区分服务器和客户端通过全局变量mgserver

的值来判断。服务器与客户端间的进程通信使用unix domain socket实现。

3. minigui-standalone。这种运行模式下,minigui以独立进程的方式运行,适合功能

单一的应用场合。

注意:针对以上三种运行模式分别定义了不同的宏。

minigui-threads: _mgrm_threads minigui-processes: _mgrm_processes和_lite_version minigui-standalone: _mgrm_standalone和lite_version和

4. 下面的几行是对pwin进行初始化的操作,第1行赋值消息处理回调函数。第9行,

初始化pzordernode成员

5. 初始化结束之后,就开始发送消息通知自身来真正的绘制窗口了。1-4行发送本窗口

的msg_sizechanging和msg_changesize消息,会调用本窗口消息回调函数中的相应处

理部分。第6行是发送msg_addnewmainwin消息给hwnd_desktop窗口,hwnd_desktop窗口

主要负责初始化clip区和invalid区,并且把当前窗口添加到sg_mainwinzorder链表里,

这个链表记录的是所有窗口的叠加顺序,在显示和隐藏窗口的时候,叠加顺序很重要,它会

决定屏幕上哪些窗口会受影响而需要重绘。第9行发送msg_create消息给窗口,窗口接受到

此消息一般进行子窗口的初始化和创建,如果创建失败了,则通知hwnd_desktop窗口销毁该

主窗口。

接下来我们看对话框的创建过程,对话框分为模态和非模态对话框。非模态对话框的创

建过程和主窗口的创建过程差不多,其中也调用了createmainwindow函数,之后还调用了

createwindowex创建对话框上的控件。模态对话框就是显示之后,用户不能再切换到其他主

窗口进行工

作的对话框,而只能在关闭之后,才能使用其他的主窗口,通过dialogboxindirectparam

创建,一开始的步骤与非模态对话框类似,以下的代码是其不同的部分:第7行,howner是

待创建对话框的托管主窗口,这里其实是把它disable掉了。第11行是处理msg_initdialog

消息。第18-21行,是消息处理的循环机制,这里可以看到这就是为什么模态对话框一定要

等到关闭之后,才可以使用其它的主窗口,这里还需要注意一点,由于是从对话框的托管主

窗口是hwnd_desktop窗口,因此他们共用一个消息队列,此时,对话框可能接受到发送给托

管主窗口的消息,而由于在第7行中已经将托管主窗口的dwstyle设置为ws_disable了,因

此在这些消息处理流程里面可以做相应的处理(例如当窗口被设置为ws_disable时,忽略该

消息)。25-28行,当窗口关闭时,进行的收尾工作。第31行enable托管主窗口。第23行

判断了当前对话框是否是激活窗口,如果是的话,当

最后说一下子窗口(即控件)的创建过程。在minigui中通过调用createwindow函数

(createwindow其实是createwindowex函数的宏)可以建立某个控件。控件的创建需要一个

pcontrol结构变量,下面这段代码中的第1行获取控件的主窗口。第4行通过向hwnd_desktop

发送msg_getctrlclassinfo,接受到消息之后会调用getcontrolclassinfo函数根据传入的

spclassname来获取控件的class info。控件的class info包括控件名称,默认的风格和扩

展风格,消息回调函数等。后续的代码设置控件

设置完控件的属性之后,向hwnd_desktop发送msg_newctrlinstance消息,hwnd_desktop

接受到之后,会调用dskonnewctrlinstance函数创建控件,将它添加到

篇五:arm-linux学习笔记之minigui移植

minigui-1.6.10在s3c2410平台的移植

开发板:sbc2410

cpu:s3c2410

linux-2.6.25.5

fs:jffs2

lcd:tft320 x 240 pc:fc8 linux-2.6.25.5 (一)准备工作

下载软件包

libminigui-1.6.10.tar.gz

mg-samples-1.6.10.tar.gz

minigui-res-1.6.10.tar.gz

mg-samples-str-1.6.2.tar.gz 在/home/arm/创建一个minigui的目录,然后把这些载在的软件包放在该目录下,在分

别解压缩。再在/home/arm/minigui下创建一个miniguitmp的目录,用于安装编译以后的库

文件。

(二)编译 libminigui

首先修改configure文件,在文件的开头加入交叉编译的路径

cc=arm-9tdmi-linux-gnu-gcc

cpp=arm-9tdmi-linux-gnu-cpp ld=arm-9tdmi-linux-gnu-ld

ar=arm-9tdmi-linux-gnu-ar

ranlib=arm-9tdmi-linux-gnu-ranlib strip=arm-9tdmi-linux-gnu-strip 然后执行

[root@localhost libminigui-1.6.10]# ./configure

--prefix=/home/arm/minigui/miniguitmp/ \ --build=x86_64-linux \ --host=arm-unknown-linux \

--target=arm-unknown-linux

[root@localhost libminigui-1.6.10]# make [root@localhost libminigui-1.6.10]# make install 这个过程基本上不会有什么错误的

执行make install的时候会把编译以后的资源安装到/home/arm/minigui/miniguitmp

中,在这之下会有etc include lib usr 几个目录产生。

¥#%#¥%说明:由于这是之后作的记录所以这一步产生的目录是include lib

usr这三个还是四个忘记了,网上一堆说明

然后进入/home/arm/minigui/miniguitmp/lib,执行

[root@localhost lib]# ldconfig libminigui的交叉编译工作就算完成了。

(三)安装minigui-res比较简单

进入/home/arm/minigui/minigui-res-1.6.10目录

修改config.liux文件的第11行

topdir=/home/arm/minigui/miniguitmp 保存

然后[root@localhost minigui-res-1.6.10]# make install

资源文件被安装到/home/arm/minigui/miniguitmp/usr/local/lib/minigui/res下面

有这几个东西 bmp cursor font icon imetab (四)修改/home/arm/minigui/miniguitmp/etc/minigui.cfg文件

[system]

# gal engine and default options gal_engine=fbcon

defaultmode=320x240-16bpp # ial engine

#ial_engine=qvfb

#mdev=/dev/input/mice

ial_engine=console

mdev=/dev/mouse

mtype=imps2 [fbcon]

defaultmode=320x240-16bpp [qvfb]

defaultmode=320x240-16bpp

display=0 一般就上面几个地方要修改

然后把minigui.cfg下载到开发板的/etc/目录下

(五)下载minigui的运行库

把pc上/home/arm/minigui/miniguitmp/lib中所有的运行库下载到开发板上的

/usr/lib目录下;

在把pc上/home/arm/minigui/miniguitmp/usr/local/lib下的minigui目录整个下载

到开发板的/usr/lib下面,到现在开发板上应该有这些东西了

在开发板的/usr/lib下面有

lib.tar.bz2 libminigui-1.6.so.10 libvcongui-1.6.so.10.0.0 libmgext-1.6.so.10 libminigui-1.6.so.10.0.0 libvcongui.a libmgext-1.6.so.10.0.0 libminigui.a https://www.wendangku.net/doc/c612281517.html, libmgext.a https://www.wendangku.net/doc/c612281517.html, libvcongui.so https://www.wendangku.net/doc/c612281517.html, libminigui.so minigui libmgext.so libvcongui-1.6.so.10 其中minigui是目录

在开发板的/etc下面应该有minigui.cfg文件存在。

现在准备工作已经已经完成,下面应该移植一些演示程序。

(六)编译mg-samples-1.6.10或者mg-samples-str-1.6.2 这两个东西编译的时候比较不好整,偶太菜,费劲半天才编译通过,事后作的记录可能

遗漏。

1、进入/home/arm/minigui/mg-samples-1.6.10

修改configure.in第30行,这一步有没有用说不清楚,改成下面的样子

2、修改configure文件

在文件的最前面加上交叉编译的工具

cc=arm-9tdmi-linux-gnu-gcc

cpp=arm-9tdmi-linux-gnu-cpp

ld=arm-9tdmi-linux-gnu-ld

ar=arm-9tdmi-linux-gnu-ar

ranlib=arm-9tdmi-linux-gnu-ranlib strip=arm-9tdmi-linux-gnu-strip 3、运行configure进行配置

[root@localhost mg-samples-1.6.10]# ./configure

--prefix=/home/arm/minigui/miniguitmp/ \ > --build=x86_64-linux \ > --host=arm-unknown-linux \ > --target=arm-unknown-linux ……

……

最后还是有

configure: warning:

minigui is not properly installed on the system. you need minigui ver 2.0.0 or later for building this package. please configure and install minigui ver 2.0.0 first.

这个提示,不管他。

4、修改src/makefile文件

找到

cc = arm-9tdmi-linux-gnu-gcc 改成

cc = arm-9tdmi-linux-gnu-gcc -l/home/arm/minigui/miniguitmp/lib cflags = -g -o2 -`wall -wstrict-prototypes -pipe 改成

cflags =-o2 libobjs = 改成

libobjs = -lminigui -lmgext -lm -lpthread libs = -lminigui 改成

libs = -lminigui -lmgext -lm -lpthread $(cppflags) $(am_cflags) $(cflags) 改成

$(cppflags) $(am_cflags) $(cflags) -lminigui -lmgext -lm -lpthread

-i/home/arm/minigui/miniguitmp/include (上面的有一步无用)¥%¥#……%¥……%丫的。

这样基本上可以了,mginit.c文件里面有地方修改后也可以编译完成的,但是

有./configure生成的makefile,已经把这个地方注销掉了。象这样,省得动手修改。

am__exeext_2 =

#am__exeext_3 = scrnsaver$(exeext) mginit$(exeext) 如果想要一起编译这个断,需要修改mginit.c源文件,暂时不说

5、进入/home/arm/minigui/mg-samples-1.6.10/src

运行make

…………

然后在res目录下会有很多可执行文件。

(七)下载演示程序

吧/home/arm/minigui/mg-samples-1.6.10/src下的所有文件和目录打包成一个

mg.tar.bz2的文件下载到开发板的/usr/local/mg下面没有这个目录自己“贱”一个。

然后解压缩

在开发板上解压缩tar -xvzf mg.tar.bz2 然后删除*.c和makefile文件

rm *.c

现在可以运行minigui的演示程序了。

(八)问题

1、

可能会有这个问题:

gal: init gal engine failure: fbcon. gdi: can not initialize graphics engine!

我也出现了,解决方法忘记了,网上查的,不是禁止newgal,就是修改源代码,还得上

网查。

2、tty0的问题

保证tty0有效

不行的话就自己创建一个tty0节点:

crw-r--r-- 1 root root 4, 0 jan 1 00:02 tty0 3、鼠标的问题

我的是usb鼠标。

3.1要支持鼠标首先要在内核中加入驱动支持:

#

# usb input devices

#

config_usb_hid=y

config_usb_hidinput_powerbook=y config_hid_ff=y

config_hid_pid=y

config_logitech_ff=y

config_pantherlord_ff=y

config_thrustmaster_ff=y config_zeroplus_ff=y

config_usb_hiddev=y

config_usb_support=y

config_usb_arch_has_hcd=y

config_usb_arch_has_ohci=y

# config_usb_arch_has_ehci is not set config_usb=y

# config_usb_debug is not set # config_usb_announce_new_devices is not set 大概这个样子

3.2 然后创建节点

查看/proc/bus/input/devices文件

#cat /proc/bus/input/devices i: bus=0003 vendor=15d9 product=0a33 version=0110 n: name=usb mouse

p: phys=usb-s3c24xx-1/input0 s: sysfs=/class/input/input0 u: uniq=

h: handlers=mouse0

b: ev=17

b: key=70000 0 0 0 0 0 0 0 0 b: rel=103

b: msc=10 确定已经鼠标已经连接上了

然后查看/proc/bus/input/handler # cat /proc/bus/input/handler n: number=0 name=kbd

n: number=1 name=mousedev minor=32 看到number=1 name=mousedev minor=32这个东西了

# cat /proc/devices

character devices:

10 misc

13 input

29 fb

到/dev下创建

#mknod /dev/input/mouse c 13 32 crw-r--r-- 1 root root 13, 32 jan 1 00:25 input/mouse 其中13是设备号的高位 32低位上面的minor=32和13 input定的,不小的是不是这么

会事情,反正鼠标可以工作了.

可以用下面的命令测试一下:

# cat /dev/input/mouse

??(?(?(?(8??8??8??8??8??8??8??8? ?(

这一堆乱码就是移动鼠标的时候输出的东西,说明鼠标可以工作了。

企业员工学历提升培训方案1.doc

企业员工学历提升培训方案1 TO: 腾飞中的捷奥科技房总 企业员工学历提升培训方案 您好!您是否为企业留不住一线优秀员工而苦恼,每年春季伴随着用工荒的到来,而严重影响到了企业的正常运转?您是否为企业中高层员工的学历及管理技能的偏低而忧虑? 参加莱特学院的企业员工学历和技能提升培训方案,快速解决企业的上述难题,让企业轻松留住优秀员工,让员工为企业尽心尽力。 成功案例 绍兴诸暨的某大型企业集团,拥有员工近1.2余万人.。面对企业的飞速发展和激烈的市场竞争,很多中低层管理者和优秀的企业员工不能长期为公司任职,致使企业在用人和留人等环节造成巨大的成本浪费,严重的制约了集团发展速度。后来,该公司找到我校,了解到我校对企业员工学历提升计划,结合自身情况,制定了新的员工福利策略,进一步留住了集团内部优秀员工! 合作方案 1、与企业选拔出的优秀员工签订协议,公司为员工提升学历,员工在企业服务3-5年不等; 2、企业考虑公司实际情况与员工岗位情况,承担全部或部分学费,变相成为员工福利的一部分;

3、企业与我校签订学历提升协议,在规定时间内为员工拿到相应专科、本科或者在职研究生(MBA)学历。 案例优势 1、员工提升学历,企业承担费用,在很大程度上提升了企业形象和增加了员工对公司的归属感,间接的提高了企业的核心竞争力。 2、企业通过此种方式可以让优秀员工更好为企业服务,避免了优秀员工的流失,同时降低了招聘、培养新员工可能带来的巨大成本; 3、优秀熟练的员工相对于新员工,很大程度上提高了企业的生产率,让企业在经济上收益,提高企业的快速发展能力。 4、企业为员工进行团报学历提升课程,可享受特价优惠。 精品课程展示 ◆员工发展培训 技能类: 设计培训:室内设计、平面设计、网页设计、产品设计、模具设计 电子商务:淘宝开店、淘宝客服培训、企业淘宝商城运作 学历类: 专、本学历:

minigui1.6.10安装

新手大家一起学(1)---minigui1.6.10安装笔记 首先,从飞漫的网站上下载相关的压缩包: https://www.wendangku.net/doc/c612281517.html,/project/showfiles.php?group_id=231764& package_id=281013&release_id=617949。 qvfb-1.1.tar.gz minigui-res-1.6.10.tar.gz mg-samples-1.6.10.tar.gz libminigui-1.6.10.tar.gz 在home目录下创建一个minigui的目录 mkdir minigui 将这些压缩包拷贝到home/minigui目录下 首先安装minigui的资源文件:

[root@localhost minigui]# tar -xvzf minigui-res-1.6.10.tar.gz [root@localhost minigui]#cd minigui-res-1.6.10 [root@localhost minigui-res-1.6.10]# make install 安装minigui的库文件 [root@localhost minigui]# tar -xvzf libminigui-1.6.10.tar.gz [root@localhost minigui]# cd libminigui-1.6.10 [root@localhost libminigui-1.6.10]# ./configure [root@localhost libminigui-1.6.10]# make [root@localhost libminigui-1.6.10]# make install 安装minigui的例子库 [root@localhost minigui]# tar -xzvf mg-samples-1.6.10.tar.gz

教师在职提高培训的计划和措施

晴隆民族中学关于教师学历提高培训的 计划和措施 (2006-2010) 为了认真落实学校《“两全”五年总体规划》,进一步提高广大教师的政治业务素质,建设一支适应高中教育改革和发展需要的高素质的教师队伍。根据《教育法》、《教师法》,并结合我校实际,特拟订本计划和措施。 一、指导思想 以邓小平理论和“三个代表”重要思想为指导,根据《规划》要求,以促进教师专业发展、提高教师队伍的整体素质为目的,坚持“面向全员、突出骨干,以新理念、新课程、新技术和师德教育”为重点,充分调动教师的积极性,切实解决好培训制度、培训项目、培训经费等方面的问题,扎扎实实做好教师在职培训,提高广大教师实施素质教育的能力和水平,为我校全面推进素质教育和实施新课程计划提供高水平的师资。 二、培训原则 1、教师在职培训应坚持政治、业务两手抓,把加强政治思想教育、增强师德修养放在首位。 2、教师在职培训应贯彻理论联系实际的原则,按需施教,学用结合,注重实效,着眼于提高教育教学能力。 3、教师在职培训以学校或教研组为基本阵地,按照在职教师培训的规律,坚持自学、业余、短训为主要原则,多渠道、多形式、多层次地开展教师在职提高培训工作。 三、培训对象 随着社会和高中教育的不断发展,对教师提出了新的、更高的要求,凡我校教师都必须参加教师在职提高培训,不断提高政治、业务素质。 四、培训目标和计划 1、以“新理念、新课程、新技术和师德教育”为重点,每学期开学初各教研组集中培训一周,使每位教师接受不少于30学时的在职培训。 2、实施教师学历学位提高培训,促进全校教师学历学位水平整体提升。到2010年底,全校专任教师中具有本科及以上学历的比例分别达到98%以上。

教程系列十--使用mStudio开发MiniGUI应用程序

天行健,君子以自强不息;地势坤,君子以厚德载物 天 嵌 通 途 工 作 室 教程系列 <十> 使用mStudio开发MiniGUI应用程序 工作室网址 https://www.wendangku.net/doc/c612281517.html,/embedroad BBS https://www.wendangku.net/doc/c612281517.html,/embedroad/bbs 金 陵 科 技 学 院 信息技术学院 天嵌通途工作室教程系列/ EmbedRoad Studio Tutorials Series

https://www.wendangku.net/doc/c612281517.html,/embedroad jinwenjie2007@https://www.wendangku.net/doc/c612281517.html, 第 2 页 共 11 页 天嵌通途工作室是由学生自发组织的半商业性质的团体, 主要由金陵科技学院嵌入式爱好者以及软件工程爱好者组成, 使用mStudio开发MiniGUI应用程序 mStudio 是飞漫软件推出的面向MiniGUI 开发的一款可视化集成开发环境,基于Eclipse CDT,为开发人员提供所见即所得(WYSIWYG)的界面设计环境,同时,自动生成代码,维护工程框架等。运行于Windows 版本的mStudio 采用了MinGW 运行环境。 版本与运行环境: FMSoft mStudio 1.0 with MiniGUI-BE V3.0 for Windows 支持操作系统:Windows 2000 / XP / 7操作系统 支持硬件平台:x86 一、软件安装 1.1 安装C/C++运行环境 如果您未安装VS2005的运行环境,请安装vcredist_x86.exe ,也可以在工作室网站上下载:https://www.wendangku.net/doc/c612281517.html,/embedroad/down.asp 。 如果你已经装过VS2005集成开发环境,则这步可以省略。 1.2 安装JRE或者JDK 如果您未按照JRE运行环境,请安装Windows版本JRE 。 (jre-6u19-windows-i586.exe) 以上两个全部默认路径安装即可。JRE 的安装目录是:C:\Program Files\Java。 1.3安装mStudio 下载网址:https://www.wendangku.net/doc/c612281517.html,/index.php?id=136&L=1。 运行mStudio-1.0-MiniGUI-BE-3.0-MinGW-en.msi ,这个软件免费,一路默认安装即可。 1.4 选择Workspace路径 双击软件运行Eclipse,第一次启动时需要选择Workspace 路径,但工程存储路径中不能包含空格和中文字符。例如:

员工培训实施方案

员工培训实施方案 员工培训实施方案 员工培训实施方案篇一: 为贯彻落实董事长、党委书记******同志关于加强员工培训工作的讲话精神,全面提升集团公司员工的综合素质和业务能力,推进集团健康快速发展,结合集团公司实际,制定20xx年员工培训计划。 一、总体目标 1、加强公司高管人员的培训,提升经营者的经营理念,开阔思路,增强决策能力、战略开拓能力和现代经营管理能力。 2、加强公司中层管理人员的培训,提高管理者的综合素质,完善知识结构,增强综合管理能力、创新能力和执行能力。 3、加强公司专业技术人员的培训,提高技术理论水平和专业技能,增强科技研发、技术创新、技术改造能力。 4、加强公司操作人员的技术等级培训,不断提升操作人员的业务水平和操作技能,增强严格履行岗位职责的能力。 5、加强公司员工的学历培训,提升各层次人员的科学文化水平,增强员工队伍的整体文化素质。 6、加强各级管理人员和行业人员执业资格的培训,加快持证上岗工作步伐,进一步规范管理。 二、原则与要求 1、坚持按需施教、务求实效的原则。根据集团改革与发展的需要和员工多样化培训需求,分层次、分类别地开展内容丰富、形式灵活的培训,增强教育培训的针对性和实效性,确保培训质量。

2、坚持自主培训为主,外委培训为辅的原则。整合培训资源,建立健全以集团培训中心为主要培训基地,临近院校为外委培训基地的培训网络,立足自主培训搞好基础培训和常规培训,通过外委基地搞好相关专业培训。 3、坚持厂校联合办学,业余学习为主的原则。根据公司需求主流与相关院校进行联合办学,开办相关专业大专课程进修班,组织职工利用周末和节假日集中授课,结合自学完成学业,取得学历。 4、坚持培训人员、培训内容、培训时间三落实原则。20xx年,高管人员参加经营管理培训累计时间不少于30天;中层干部和专业技术人员业务培训累计时间不少于20天;一般职工操作技能培训累计时间不少于10天。 三、培训内容与方式 公司领导与企业高管人员 1、中央、国家和政府的大政方针的学习,国内外政治局势、经济形势分析,国家有关政策法规的研究与解读。通过上级主管部门统一组织调训。 2、开拓战略思维,提升经营理念,提高科学决策能力和经营管理能力。通过参加企业家高端、峰会、年会;到国内外成功企业参观学习;参加国内外著名企业高级培训师的高端讲座。 3、学历学位培训、执业资格培训。参加北大、清华、南开、天大以及中央、省委党校的学历进修或MBA、EMBA学习;参加高级经营师等执业资格培训。 中层管理干部 1、管理实务培训。生产组织与管理、成本管理与绩效考核、人力资源管理、激励与沟通、领导艺术等。请专家教授来公司集中授课;组织相关人员参加专场讲座;在集团培训中心接收时代光华课程。

能力提升方案

一、总体目标 1、加强公司高管人员的培训,提升经营者的经营理念,开阔思路,增强决策能力、战略开拓能力和现代经营管理能力。 2、加强公司中层管理人员的培训,提高管理者的综合素质,完善知识结构,增强综合管理能力、创新能力和执行能力。 3、加强公司专业技术人员的培训,提高技术理论水平和专业技能,增强科技研发、技术创新、技术改造能力。 4、加强公司操作人员的技术等级培训,不断提升操作人员的业务水平和操作技能,增强严格履行岗位职责的能力。 5、加强公司员工的学历培训,提升各层次人员的科学文化水平,增强员工队伍的整体文化素质。 6、加强各级管理人员和行业人员执业资格的培训,加快持证上岗工作步伐,进一步规管理。 二、原则与要求 1、坚持按需施教、务效的原则。根据公司改革与发展的需要和员工多样化培训需求,分层次、分类别地开展容丰富、形式灵活的培训,增强教育培训的针对性和实效性,确保培训质量。 2、坚持自主培训为主,外委培训为辅的原则。整合培训资源,建立健全以公司培训中心为主要培训基地,临近院校为外委培训基地的培训网络,立足自主培训搞好基础培训和常规培训,通过外委基地搞好相关专业培训。 3、坚持“公司+院校”的联合办学方式,业余学习为主的原则。根据公司需求主流与相关院校进行联合办学,开办相关专业的专本科课程进修班,组织职工利用周末和节假日集中授课,结合自学完成学业,取得学历。

4、坚持培训人员、培训容、培训时间三落实原则。,高管人员参加经营管理培训累计时间不少于30天;中层干部和专业技术人员业务培训累计时间不少于20天;一般职工操作技能培训累计时间不少于30天。 三、培训容与方式 (一)公司领导与高管人员 1、中央、国家和政府的大政方针的学习,国外政治局势、经济形势分析,国家有关政策法规的研究与解读。通过上级主管部门统一组织调训。 2、开拓战略思维,提升经营理念,提高科学决策能力和经营管理能力。通过参加企业家高端论坛、峰会、年会;到国外成功企业参观学习;参加国外著名企业高级培训师的高端讲座。 3、学历学位培训、执业资格培训。参加北大、清华以及中央、省委党校的学历进修或mba、emba学习;参加高级经营师等执业资格培训。 (二)中层管理干部 1、管理实务培训。生产组织与管理、成本管理与绩效考核、人力资源管理、激励与沟通、领导艺术等。请专家教授来公司集中授课;组织相关人员参加专场讲座;在公司培训中心接收时代光华课程。 2、学历进修和专业知识培训。积极鼓励符合条件的中层干部参加大学(专本科)函授、自考或参加mba及其它硕士学位进修;组织经营、企管、财会专业管理干部参加执业资格考试,获取执业书。 3、强化项目经理(建造师)培训。今年公司将下大力组织对在职和后备项目经理进行轮训,培训面力争达到50%以上,重点提高他们的政治素养、管理能力、人际沟通能力和业务能力。同时开通“环球职业教育在线”远程职业教育网,给员工提供学习的绿色通道。要求公司各单位要选拔具有符合建造师报考条件,且有专业发展能力的员工,组织强化培训,参加社会建造师考试,年净增人数力争达到10人以上。

煤矿场关键岗位中专学历素质提升培训实施方案

霍州煤电集团公司煤矿关键岗位从业人员 中专学历素质提升培训实施方案 集团公司各有关单位: 为进一步提高集团公司煤炭从业人员队伍素质,提升关键岗位人员的学历和技能水平,根据焦煤集团《关于认真组织开展对B类安全管理人员、煤矿特种作业人员和班组长进行中专学历素质提升培训的通知》(山西焦煤人发【2012】241号)及集团公司《关于下发<霍州煤电集团公司推进煤矿从业人员“人本安全、培训教育、素质提升”工程实施方案>的通知》(霍煤电劳字【2011】704号)要求,经研究决定,对集团公司学历不达标的煤矿B类安全管理人员、煤矿特种作业人员和班组长等关键岗位从业人员进行中专学历素质提升培训,现将有关事宜安排如下,望遵照执行。 一、组织领导 为加强组织领导,规范集团公司煤矿关键岗位从业人员中专学历素质提升培训相关管理工作,成立集团公司煤矿关键岗位从业人员中专学历素质提升培训工作领导组。 组长:张金耀 副组长:侯建铎张立忠王国平 成员:职教中心、组织人事部、劳资部相关人员,各办学点分管职工培训的领导,组织部、劳资科、培训部门负责人。 领导组下设办公室,办公室设在职工培训教育中心。 办公室主任:薛龙虎(兼) 领导组办公室的主要职责是:与山西省煤炭职业中等专业学校配合,接受主管部门监督管理,负责组织生源,按照规定的教学计划、教学大纲要求编制各教学点教学实施计划,对各办学点的教学管理、教学质量

进行监管,并负责组织搞好理论教学、实习实训、教师考核及教学日常管理工作。 二、培养对象与学制 1、培养对象为集团公司各矿井单位不具备煤炭职业中专以上学历(含煤炭类技校和职高、与煤炭专业相近的中专、技校和职高)的B类安全管理人员、煤矿特种作业人员和班组长等关键岗位从业人员。 2、已具有高中学历的学员实行一年学制,具有初中学历的实行两年学制。 三、教学组织 1、集团公司煤矿关键岗位从业人员中专学历素质提升工作由集团公司煤矿关键岗位从业人员中专学历素质提升工作领导组统一领导,职教中心协同山西省煤炭职业中等专业学校做好相关教学管理工作。 2、按照“全面覆盖、合理布局、就近安排、方便学员”的原则,生产矿井设置辛置煤矿、曹村煤矿、白龙煤矿、李雅庄煤矿、霍宝干河煤矿五个教学点;区域公司设置汾河公司、吕梁公司、晋南公司、晋北公司四个教学点;职教中心设置一个教学点。 3、每周集中授课1—2天,其余时间由学员本人带课题在岗实习,并写出实习报告,学期末集中10—15天进行考前辅导。 4、学员通过工学交替、工学结合、现场教学、项目教学等灵活的学习方式完成学业。毕业考核合格后,统一颁发山西省煤炭职业中等专业学校的《中专毕业证书》和山西煤炭职业技能鉴定中心的《职业资格证书》,集团公司承认其学历,不享受国家助学金。 5、职教中心配合集团公司组织人事、劳资部门及各单位组织人事、劳资部门做好中专学历提升职业技能鉴定和学员学历提升组织工作,合

2012年在职员工学历及技能提升培训方案

2012年在职员工学历及技能提升培训方案 (修订稿 一、培训目的: 1、为进一步提升我公司在职员工的专业水平和学历层次,推动我公司人才队伍的自主培养和人才梯队建设; 2、实施和“人才兴企”战略,培养一批“留得住、用得上、能带头” 的各行各业的优秀中青年技术和管理人员队伍, 以不断适应公司发展需要; 3、体现公司吸引人才、发展人才、尊重人才、留住人才的用人策略和优厚的福利, 为员工提供不断学习和发展的平台, 为稳定人才队伍打好基础。 二、培训方式: 与江南大学网络学院和南京航空航天大学等院校合作, 在公司开展高起专、专升本、攻研等学历教育。 三、培养对象及费用: 1、2011年年终获得优秀和表彰的个人高起专、专升本方面,经审核后可由公司全额有条件出资接受深造; (预计人数不超过 20名, 费用为:20*6500元/人=13万,分两年付。 2、2011年前年终获得优秀和表彰的个人高起专、专升本方面, 经审核后可由公司按 50%额度有条件出资接受深造;(限额 20名, 费用为:20*6500元/人=13万 *50%=6.5万,分两年付。 3、公司核心岗位、骨干员工、预备人员、满 6周年以上员工有意向参加高起专、专升本学历教育方面,可由单位/部门选送,由公

司按 50%额度有条件出资接受深造;(限额 20名,费用为:20*6500元/人=13万 *50%=6.5 万,分两年付。 4、公司或者政府组织的技能比赛获得表彰的个人高起专、专升本方面,经审核后可由公司按 50%额度有条件出资接受深造;(限额 20名,费用为:20*6500元/人=13万*50%=6.5万,分两年付。 5、工程硕士或工商管理硕士名额由公司选派,预计控制在 5名以内,经审核后可由公司按 50%额度有条件出资接受深造。(限额 5名,费用为:5*30000元/人=15万*50%=7.5万,分三年付。总费用预计 40万元,分 2~3年付清。 四、学院推荐及情况介绍: (一江南大学网络学院专科/本科班 1、招生对象及条件 1.1、专升本:具有国民教育系列专科及以上学历可报读专科起点本科。 1.2、高起专:具有国民教育系列高中(含普通高中、中专、中职、技校及以上学历可报读高中起点专科,报读年龄需满 18周岁。 2、录取、交费、注册: 通过报名资格审核及入学测试者, 由江南大学网络学院发放《录取通知书》及《注册须知》;领取《学生手册》、课件光盘、教材等。 3、证书、学位

几种GUI比较

几种嵌入式GUI介绍 一、MicroWindows Century软件公司维护的,较早出现的开放源代码的嵌入式嵌入式GUI 特点: 1主要特色:提供较为完善的图形功能,支持多种外部设备输入,包括LCD、鼠标和键盘等。 2核心是基于显示设备接口的,绝大部分使用C语言开发的,移植性很强。 3主要在linux、wince等操作系统上运行。 4对硬件资源的需求: 文件存储空间:100k-600k 输入输出接口:支持frambuffer ,支持每像素1、2、4、8、16、24、32.支持彩色和灰度显示。支持鼠标、键盘、触摸屏。 CPU:支持intel 16位32位,MIPS R4000、ARM。 二、Qt/Embedded(简称QtE) QtE是一个专门为嵌入式系统设计图形用户界面的工具包,挪威Trolltech 公司产品。1995年正式发行第一个版本Qt0.9。Linux桌面系统的KDE 就是基于Qt库开发的,Qt与linux操作系统的兼容性最好。

特点: 1主要特色:支持多种平台,移植时只需重新编译代码而不需要对代码进行修改。 2模块化,可剪裁,极其适合嵌入式系统的“小而快”的要求。 3用C++编写,为开发者提供清晰的框架。 4 For free 版本代码完全开放。https://www.wendangku.net/doc/c612281517.html, 三、uc/GUI uC/GUI是一个通用的嵌入式应用的图形模块,它是美国Micrium公司开发的一种高效的、与处理器和LCD控制器独立的通用GUI,可以适用各种CPU和LCD,uC/GUI完全以ANSI-C编写,因此它与处理器无关,在单任务和多任务操作系统都可以很好的应用、可以很方便地移植到不同的操作系统和嵌入式微处理器上,并可支持不同尺寸的图形液晶显示器。它采用层次化的设计,功能强大,移植方便,被广泛地应用于嵌入式领域,如PDA、机顶盒以及DVD NCD播放机等 (1)支持任何8位、16位和32位的CPU,只要求CPU具有相应的ANSI-C编译器即可; (2)所有硬件接口定义都使用可配置的宏; (3)字符、位图可显示与LCD的任意点,并不限制与字节长度的整数倍数地址; (4)所有程序在长度和速度方面都进行了优化,结构清晰;

教师学历培训提升计划

教师学历进修提升计划 教育大计,教师为本。为贯彻落实新《义务教育法》,深入贯彻落实《国务院关于基础教育改革与发展的决定》,进一步加强我校教师队伍建设,全面提高教育质量,争创一流教育水平,现就进一步加强我校教师学历培训提高采取如下措施: 一、指导思想 以社会主义核心价值观为重要思想为指导,以教师专业发展为导向,以提高教师实施素质教育的能力和水平为核心,全面提高教育质量与效益,促进中小学教师更新教育思想观念,优化知识能力结构,提高综合素质和自我开发能力,建设一支结构合理,素质优良,数量适当,与基础教育改革与发展相适应的,具有创新精神和时代特征的专业化的中小学教师队伍。 二、目标任务 1、进一步提升我校教师学历层次,全面提高教师队伍整体素质。使我校教师均达到专科以上学历,本科比例占80%。 2、全体教师要树立终身学习的思想理念,不断拓宽知识面。提高业务水平;要掌握并学会运用信息技术和必要的现代教育技术手段,积极参与教育教学科研,勇于探索创新,以适应课程改革的需要。 三、主要措施 1、全面分析我校教师学历现状,制定出合理规划,采取有效激励措施,鼓励教师参与学历进修,使应参加培训的教师尽快进入培训渠道。 2、积极鼓励教师采用多种形式参与学历培训提高。自学考试,函授、电大、地方学历都是学历进修提高的形式,鼓励已达大专学历的青年教师参与本科学历的培训与提高,鼓励教师参加跨学科的学历培训与提高,让教师在参与学历培训提高中形成学科的综合性与知识的广泛性,为教师教学提供丰富的综合性基础。坚持多形式、多渠道和学用一致的原则。学校原则上不同意教师离职学习。

3、严格执行中小学教师人事管理的有关政策,在学校教师职务评聘工作中,凡学历专业与所评资格专业不一致的教师一律按破格对待。在学校教师人事制度改革过程中学用一致、学历层次高的教师优先考虑。 4、加大资金投入,学校解决好参培教师的学习费用。凡在规定期限内参加高学历培训者,学校要筹集费用给予适当补贴,增强参培教师学习的积极性,对外出参加学习培训者的请假,按正常工作日对待。 5、落实保障措施。进一步加强领导,切实落实教师教育优先发展的战略地位,学校要以高度的责任感和使命感,进一步增强对新时期教师教育改革发展和提高教师教育质量重要性和紧迫感的认识,支持在职教师进修高学历,及时解决困难和问题,确保这项工作顺利开展。

MiniGUI 体系结构

MiniGUI 体系结构之二 1 引言 在任何一个足够复杂的 GUI 系统中,处理窗口之间的互相剪切是其首要解决的问题。因为多窗口系统首先要确保一个窗口中的绘制输出不会影响到另外一个窗口。为此,GUI 系统一般要利用 Z 序来管理窗口之间的互相剪切关系。根据窗口在 Z 序中所处的位置,GUI 系统要计算每个窗口受剪切的区域,即剪切域。通常,窗口的剪切域定义为互不相交的矩形集合。GUI 系统的底层图形引擎在进行输出时,要根据当前输出的剪切域进行输出的剪切操作。从而保证窗口的绘制输出不会互相影响。因为任何一个窗口的创建、销毁、隐藏、显示均有可能影响其他窗口的剪切域,所以首先要有一个高效的剪切域维护算法。本文将详细描述MiniGUI 中的剪切域生成算法。 许多人对控件(或者部件)的概念已经相当熟悉了。控件可以理解为主窗口中的子窗口。这些子窗口的行为和主窗口一样,即能够接收键盘和鼠标等外部输入, 也可以在自己的区域内进行输出?D?D只是它们的所有活动被限制在主窗口 中。MiniGUI 也支持子窗口,并且可以在子窗口中嵌套建立子窗口。我们将MiniGUI 中的所有子窗口均称为控件。 在 Windows 或 X Window 中,系统会预先定义一些控件类,当利用某个控件类创建控件之后,所有属于这个控件类的控件均会具有相同的行为和显示。利用这些技术,可以确保一致的人机操作界面,而对程序员来讲,可以像搭积木一样地组建图形用户界面。MiniGUI 使用了控件类和控件的概念,并且可以方便地对已有控件进行重载,使得其有一些特殊效果。比如,需要建立一个只允许输入数字的编辑框时,就可以通过重载已有编辑框而实现,而不需要重新编写一个新的控件类。 在多语种环境中,输入法是一个必不可少的模块。输入法提供了将标准键盘输入翻译为适当语种的文字的能力。MiniGUI 中也包含有标准的中文简体输入法,包括全拼、五笔和智能拼音等等。本文最后将介绍 MiniGUI 中的输入法模块实现。 回页首 2 窗口 Z 序 Z 序实际定义了窗口之间的层叠顺序。说起“Z 序”这个名称,实际是相对屏幕坐标而言的。一般而言,屏幕上的所有窗口均有一个坐标系,即原点在左上角,X 轴水平向右,Y 轴垂直向下的坐标系。Z 序就是相对于一个假想的 Z 轴而言的,这个 Z 轴从屏幕外指向屏幕内。窗口在这个 Z 轴上的值,就确定了其 Z 序。Z 序值大的窗口,覆盖了 Z 序值小的窗口。

关于公司在职员工学历提升培训报名的通知

关于公司在职员工学历提升培训报名的通知 为贯彻落实公司人才战略,有效提升员工业务素质,优化员工学历层 次与结构,目前公司人才队伍分布为本科及本科以上学历占全公司的1.94%,专科学历占9.34%,高中中专学历占27.94%,初中及以下学历占60.6%。为培养造就一支适应新时代要求的高素质职工队伍,增强企业竞争力,结合公司现状宁夏中联成人教育培训学校拟自2017 年在本公司开展“企业在职员工学历提升培训”。现将有关事项通知如下: 宁夏中联成人教育培训学校负责开展招生宣传、入学考试、上报学生 信息、发放入学通知书和学生注册报到等工作,配合宁夏大学继续教育学 院做好招生、考试、录取工作,并承担继续教育学院下达的教学环节的组 织管理工作。 一、学历层次、学习形式及学习年限 (一)学历层次:高中起点升专科(简称高起专)和专科起点升本科(简称专升本) (二)学习形式:函授 (三)学习年限:两年半 二、报考要求 (一)高起专 必须具有普通高中或中专毕业证书。 (二)专升本 必须是已经取得经教育部审定核准的国民教育系列高等学校、高等教 育自学考试机构颁发的专科毕业证书。

1.电气工程及其自动化 培养目标:本专业培养能够从事与电气工程有关的系统运行、自动控制、电力电子技术、信息处理、试验分析、研制开发、经济管理以及电子 与计算机应用等领域工作的宽口径“复合型”高级工程技术人才。 主要课程:电路学、电机学、电力电子技术、电磁场、电力系统分析、发电厂电气部分、计算机控制技术、自动控制原理、电力系统自动装置、 高电压技术等。 2.化学工程与工艺 培养目标:本专业培养具备化学工程与化学工艺方面的知识 , 能在化工、炼油、冶金、能源、轻工、医药、环保和军工等部门从事工程设计、 技术开发、生产技术管理和科学研究等方面工作的工程技术人才。 主要课程:马克思哲学原理、线性代数、物理化学、大学英语、化工 原理、化工设备机械基础、化学反应工程、化工制图、化工分离工程、化 工工艺学、煤化学、有机化工工艺学等。 3.工商管理

MiniGUI 高级图形支持系统

MiniGUI 高级图形支持系统 MiniGUI 是一款面向实时嵌入式系统的图形用户界面支持系统。MiniGUI 的开发起始于1998 年底,到现在已历经十年多时间。经过飞漫软件多年的精心打造,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统。目前,MiniGUI 已经广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域。使用MiniGUI 成功开发产品的企业有华为、中兴通讯、大唐移动、长虹、TCL、联想、迈瑞、南瑞、炬力、D2 等。这些用户广泛分部在中国大陆、中国台湾、新加坡、韩国、美国、德国、意大利、印度、以色列等国家和地区。值得一提的是,在中国自主开发的3G 通讯标准TD-SCDMA 中,约有60% 获得入网许可证的TD-SCDMA 手机使用MiniGUI 作为其嵌入式图形平台,以支撑浏览器、可视电话等3G 应用软件的运行,其中有海信T68、中兴通讯U85 等TD 手机型号。 MiniGUI 的软件架构 如上图所示,从底至上,MiniGUI 由如下几个模块组成: 图形抽象层(Graphics Abstraction Layer,GAL)。图形抽象层将来自不同操作系统或设备的图形接口进行抽象,为MiniGUI 上层提供统一的图形接口。在图形抽象层内,包含有针对Linux FB 设备、eCos LCD 设备等的软件组成部分。这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象层操作,如打开设备、设置分辨率及显示模式、关闭设备等。我们将

这些用于适配图形抽象层接口的软件组成部分称为“引擎(engine)”,其概念和操作系统中的设 备驱动程序类似。 ?输入抽象层(Input Abstraction Layer,IAL)。和GAL 类似,输入抽象层将MiniGUI 涉及的所有输入设备,如键盘(keyboard)、小键盘(keypad)、鼠标(mouse)、触摸屏(touch screen)等抽象了出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或者鼠标接口,则通过为IAL 编写不同的输入引擎实现。MiniGUI 通过IAL 及其输入引擎,提供对Linux 控制台(键盘及鼠标)、触摸屏、遥控器、小键盘等输入设备的支持。 ?图形设备接口(Graphics Device Interfaces,GDI)。该模块基于图形抽象层为上层应用程序提供图形相关的接口,如绘制曲线、输出文本、填充矩形等等。图形设备接口中含包含其他比较独立的子模块,如字体字符集(font and charset)支持、图像(image)支持等。 ?消息处理模块(Messaging Module)。该模块在输入抽象层基础上,实现了MiniGUI 的消息处理机制,为上层提供了完备的消息管理接口。众所周知,几乎所有的GUI 系统本质上都是事件驱动的,系统自身的运行,以及GUI 应用程序的运行,都依赖于消息处理模块。 ?多窗口处理模块(Windowing Module)和控件(Control 或Widget)。基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用控件类(control class),我们可以创建属于某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似C++ 那样的类和实例概念, 从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI 的控件模块实现了常见的GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。 ?外观支持(Look and Feel)。这个模块是MiniGUI V3.0 提供给上层应用程序的接口,可用来定制MiniGUI 窗口、控件的绘制。在MiniGUI V3.0 之前的版本中,对主窗口和控件的定制能力,还没有被抽离出来形成独立的模块,但我们仍然可以通过配置选项让MiniGUI 的主窗口、控件具有三种显示风格,分别是:类似PC 的三维风格(PC3D)、平板风格(FLAT)、流行风格(FASHION)。在MiniGUI 3.0 中,主窗口和控件的外观可完全由应用程序自行定制,在创 建主窗口或者控件时,指定外观渲染器(renderer)的名称,就可以让主窗口或者控件具有各自 不同的外观。 MiniGUI 运行模式 和Linux 这样的类UNIX 操作系统相比,一般意义上的传统嵌入式操作系统具有一些特殊性。举例而言,诸如uClinux、uC/OS-II、eCos 等操作系统,通常运行在没有MMU(内存管理单元,用于提供虚拟内存支持)的CPU 上;这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,MiniGUI 的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,我们可将MiniGUI 配置成三种不同的运行模式: ?MiniGUI-Threads。运行在MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式主要用来支持大多数传统意义上的嵌入式操作系统,比如VxWorks、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos等等。 当然,在Linux 和uClinux 上,MiniGUI 也能以MiniGUI-Threads 的模式运行。

素质提升培训实施方案

山西煤炭运销集团 太原有限公司 《人本安全、培训教育、素质提升培训实施方案》 人力资源部 2011年10月20日

煤业公司所属各矿、各部室: 根据山西省煤炭工业厅晋煤劳发(2011)1166号《山西省煤炭工业厅推进煤矿从业人员“人本安全、培训教育、素质提升”工程工作方案》的文件精神,结合集团公司关于转发《“人本安全、培训教育、素质提升”工程工作方案》的通知,我公司决定实施“人本安全、培训教育、素质提升”工程,这是全面提高煤矿从业人员整体素质的重要举措,坚持“人才强煤”和“人力资源优先发展”战略,大力加强煤矿用工管理和全员教育培训,不断提高全员准入标准,严格实行煤矿从业人员年检制度,全面提升从业人员素质,到“十二五末”争取实现煤矿从业人员队伍专业化,煤矿企业是素质提升工程的主体,各煤矿要切实把素质提升工程的各项计划和要求落到实处,要将人员素质作为安全生产的第一要素,把人员是否达到准入标准和是否符合煤矿用工规定作为矿井投产、复工复产的前置条件,加强管理,在日常执行过程中,要把素质提升工程的落实和推进情况、准入标准的执行情况作为各类安全检查的主要内容,通过严把煤矿用工和用人关口,促进安全生产和整体素质全面提升。。 一、工作目标 (一)实行煤矿从业专业学历准入 -------------各类专业好文档,值得你下 载,教育,管理,论文,制度,方案手

1、煤矿企业安全生产管理人员专业学历准入 ⑴煤矿企业“六长”和副总工程师 准入标准:煤矿企业“六长”(包括煤矿矿长、生产矿长、安全矿长、机电矿长、总工程师、通风区队长,下同)和副总工程师必须具备煤炭相关专业大专以上学历(包括煤炭专业证书班所取得的学历,下同)。 达标时间:到2011年底,全省煤矿企业“六长”和副总工程师专业学历达到准入标准。 奋斗目标:到“十二五”末,全省煤矿企业“六长”和副总工程师具备煤炭相关专业本科以上学历达到50%以上,研究生学历达到7%以上。 ⑵煤矿企业其它安全生产管理人员 准入标准:煤矿企业其它安全生产管理人员(除煤矿企业“六长”和副总工程师外其它管理人员和专业技术人员,下同)必须具备煤炭相关专业中专以上学历。 达标时间:到2011年底,全省煤矿企业其它安全生产管理人员专业学历达到准入标准。 -------------各类专业好文档,值得你下 载,教育,管理,论文,制度,方案手

教师学历提高实施方案

东车寄小学 教师学历提高实施方案 近年来,随着社会的进步、教育的发展,人才素质问题越来越引起人们的关注和重视。高素质人才的培养离不开教育,更离不开教师。在世界各国,无论是教育界人士,还是政府部门都已清楚地认识到教育改革、教育发展最终都要通过教师的教育实践才能实现。“为组织适应未来的教育,我们需要有新型的教师。”正是面对着这一迫切的现实需求,世界各国纷纷开始将教育改革的重点转向教师队伍建设,以教师专业化作为提高教师素质、改善教育质量的重要途径。 从宏观来看,早有“国运兴衰,系于教育;教育成败,系于教师”的观点,著名的学者马力先生曾经这样谈到过对教师的看法:教师是专门职业,教师的职业具有鲜明的专业性,教师的专业化是现代教育的重要标志。同时,随着社会的发展和教育改革尤其是新课程改革的纵深推行,对教师这一职业的岗位要求亦越来越高,并已将教师这一职业与医生、会计等相提并论,即要求走专业化的道路。 加强教师个体的专业成长,是提高教育教学质量、促进学生健康成长、加快学校整体的发展的必由之路。同时,我们认为,这更是以人文态度关注教师个人发展的有力体现。最终,将达到“激活个体,优化群体”终极效应。 现状分析 在年龄结构上,我校现有教师27人,主要以中青年教师为主导。其中40岁以下19人,40岁及以上8人。其中,本科学历5人,大专学历16人。在职称结构上,具有小学高级职称17人,小学一级职称10人。在优秀人才方面,有学科带头人6人。 在实践中凸现出来的问题表现出,青年教师相对于老年教师来说,他们有着较新的教育教学观念和较为扎实的理论基础,但他们驾驭教学的能力相对薄弱,尤其缺乏教学实践经验,常常出现走弯路、事倍功半的情况。老教师呢?经过多年的教学探索,这支队伍有着丰富的实践经验和游刃有余教学能力,但在实践中表现出观念滞后或更新不够、方法陈旧等弊端。 针对于以上情况,我们将根据教师个体的业务水平、能力倾向、个性特点和发展基础个体的差异性,有针对性地予以引导培养,为他们自主发展创设必要条件。对他们合理定位,放手使用,细心呵护,扬其所长,养其所能,为教师个体的成长与发展,搭建舞台、创设环境、提供帮助,引导他们结合自身工作实践,合理规划其个人发展方向,通过种种方法和途径,采取切合实际的措施,实现自身专业化的快速成长,这项工作,学校将作为保障整体发展的战略性工作来抓。 实施原则 全面规划、自主参与、分层实施、形成合力、民主管理、共谋发展。 活动目标 1、提升教师的职业思想、职业道德水平; 2、学会自我反省、反思,自我教育和自我规划,关注自己的发展; 3、促进教师教育教学观念的更新,关注自身成长的重要性和与学校、与学生发展、与教育事业的发展的链接关系; 4、明确树立“以学生发展为宗旨”的教育伦理; 5、达到在教育教学中真正落实“全体性、全面性、主动性、差异性、终身发展意识”的要求; 6、大力发展教师的“专业知识体系”;

MiniGUI及其移植与应用

MiniGUI及其移植与应用 权宁一 (东北电力大学信息工程学院吉林吉林132012) 【摘要】:本文介绍了MiniGUI系统在嵌入式开发中的移植与应用。对MiniGUI图形软件的特点、体系结构、工作模式做了叙述,描述了MiniGUI在uc_osⅡ环境中的移植方法,MiniGUI应用软件的开发思想和流程,并对其应用领域做了介绍。 【关键词】:MiniGUI,移植,控件,消息循环 1、MiniGUI概述 随着嵌入式系统在工业控制、信息家电、智能手持终端、办公自动化等领域中的广泛应用,人们对产品的图形用户接口(GUI)的需求越来越强烈。图形美观、界面友好的GUI已广泛应用在3G手机、PDA、智能传感器、工控终端等嵌入式设备上,其中比较成熟的GUI产品有:MiniGUI、MicroWindows、OpenGUI、TinyXWindow、QT/Embedded。 MiniGUI最初是清华大学为数控机床研发计算机控制系统时根据需要独立开发的图形用户接口,它具有代码小巧、实时性好、高效稳定、易于裁减的特点,非常适合应用于嵌入式实时控制系统。MiniGUI可以运行在任何一种具有线程支持的POSIX兼容系统上,同时也是国内出现的最早的遵循LGPL条约的自由软件之一。MiniGUI有三种运行模式:⑴MiniGUI-Threads:运行在MiniGUI-Threads的程序可在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行,可以配合的操作系统有ucosii、vxworks、linux。⑵MiniGUI-lite:每个程序是单独的进程,每个进程可建立多个窗口,只有具备完整unix特性的操作系统才可运行这一模式。⑶MiniGUI-standalone,可以以独立进程方式运行而不需要其它任何支持,这种方式几乎可以支持所有操作系统。MiniGUI具有以下特点:⑴小巧可订制,包含全部功能的库文件只有300k。⑵高稳定性,可移植性好。⑶界面皮肤支持,用户可通过皮肤支持获得华丽外观界面。⑷提供了完备的多窗口机制及消息传递机制。⑸丰富的控件资源,包括菜单、进度条、列表框、按钮、工具栏等。(6)多种键盘布局支持,多字符集及多字体支持,常见的图像文件支持。⑺多种汉字输入法支持,windows资源文件支持。 2、MiniGUI的结构特点与移植方式 2.1MiniGUI的体系结构 图1MiniGUI结构体系 MiniGUI采用了分层结构设计思想,共分为GAL、IAL、Pthread层,MiniGUI核心层,用户接口层三层结构。GAL为图形抽象层,提供了底层操作系统的图形接口,配置MiniGUI选用GAL引擎,就可使用framebuffer作为MiniGUI图形发生引擎;IAL为输入抽象层,它提供了输入设备如键盘鼠标等的驱动,可将输入设备的输入事件最终映射为GUI系统API层的消息事件。有了GAL、IAL可以把底层硬件及操作系统进行完全屏蔽,方便MiniGUI的移植。同时,用户可在XWindow系统中调试运行自己的产品,通过重新编译就可使软件运行在特定的硬件平台上。Pthread(POSIXthread)是提供内核级线程支持的c库函数。MiniGUI核心层为中间层,包含了窗口系统所需要的各个功能模块,详见图1。用户接口层API对于不同的平台是一致统一的,底层系统已被完全屏蔽,用户不必考虑输入设备及绘图细节,只需使用标准C语言进行类似win32库函数调用即可。2.2MiniGUI工作模式 MiniGUI采用微客户/服务器机制,通过消息队列和多线程之间的同步机制来实现。在多线程环境中各线程之间有信息交互的需要,依据"先来先服务"的原则,依次处理每个线程的请求。一个线程首先在desktop微服务器的消息队列中放置一条消息,要求建立窗口,然后进入等待状态。当desktop处于空闲状态时可以立即处理这一请求。最后,desktop返回处理结果,唤醒等待的线程。 MiniGUI启动3个重要的微服务器,它们分别为desktop、parser、timer。其中desktop用于管理MiniGUI窗口中的所有主窗口;parser线程用于采集键盘鼠标事件并转换成API层消息;timer线程用来触发定时器事件。 2.3MiniGUI的移植 嵌入式系统的结构框架从底层到上层依次为:硬件平台、嵌入式操作系统、MiniGUI、用户程序,其中uclinux与uc/OS-II为常用的操作系统,下面以uc/OS-II为例介绍MiniGUI的移植。uc/OS-II具有实时性强、代码简单的特点,在教学及工业实时控制领域得到了广泛应用。MiniGUIforuc/OS-II的配置及编译可在windows环境中的ADS开发平台中进行,编译完成之后生成一个静态库MiniGUI_lib,最终生成包括uc/OS-II、MiniGUI、应用程序在内的可执行映像文件,将映像文件固化写入硬件平台即完成MiniGUI的移植。在编译之前需要进行以下工作:设置MiniGUI配置头文件、确定头文件路径、选定编译规则。MiniGUI配置头文件中参数_AUTO_IAL是模拟键盘鼠标选项;_COM-MM_IAL是uc/OS-II通用输入引擎;_GB_SUPPORT是字符集支持;_USE_OWN_MALLOC为内存管理函数支持;_USE_OWN_STDIO为函数支持。编译规则设置中_MiniGU-I_LIB_声明编译MiniGUI_LIB库;_uc/OS-II_声明目标操作系统;-EC允许隐性类型转换;_NOLINUX_表示非linux系统。3、基于MiniGUI的软件设计开发思想 3.1MiniGUI开发流程 uc/OS-II初始化后创建任务main_task,在该任务中创建POSIX协议线程main_thread,main_thread中调用函数mg_main_task,进入MiniGUI入口MiniGUI_entry,进而调用应用程序入口函数MiniGUIMain,执行用户软件及窗口过程函数。MiniGUI应用程序必须包括的头文件有:common.h--定义了宏及数据类型;minigui.h--定义了接口函数及杂项函数;window.h--定义了窗口的宏及数据类型;control.h--定义了系统内部控件。 MiniGUIMain()是程序的入口点函数,一般用户程序先创建一个主窗口或非模式对话框,在主窗口内建立若干控件,然后建立消息队列,进入窗口消息循环,响应各类消息。通过调用Cre-ateMainWindow()函数创建主窗口,函数返回窗口句柄。函数调用时需给MAINWINCREATE结构体指针赋值,确定主窗口的各项属性值。调用ShowWindow()函数将主窗口进行显(下转第71页 )

相关文档