您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术PPSM嵌入式RTOS中的窗口系统开发 正文
PPSM嵌入式RTOS中的窗口系统开发

PPSM嵌入式RTOS中的窗口系统开发

点击数:7140 次   录入时间:03-04 11:40:08   整理:http://www.55dianzi.com   嵌入式系统-技术

       WS_MAINWND——应用程序主窗口。关闭主窗口将自动关闭应用程序。

       WS_POPUP——弹出式窗口。单击非窗口区域将自动关闭该窗口。该属性不能和WS_MAINWND同时出现。

       WS_NOBORDER——无边框窗口。

       WS_NOSTATEBAR——无状态条控件的窗口。一般窗口均有一个在窗口底部的状态条,提供弹出该窗口的命令菜单、显示窗口标题、关闭窗口、打开选择输入法、显示系统日期和时间等功能。

       ③ WS_POPUP类窗口的屏幕活动区和窗口活动区的ID。

       ④ 窗口当前的光标位置。

       ⑤ 窗口中控件的列表。

       ⑥ 窗口保存其覆盖区域的内存指针。

       ⑦ 前一个窗口的指针。用以在关闭窗口时重设应用程序的顶层窗口。

       ⑧ 窗口的缺省输入法类型和打开的输入法控件的句柄。

       ⑨ 窗口的焦点控件的句柄。焦点控件将最先处理字符输入的消息。

       ⑩ 窗口的消息处理函数指针。

       3.2 窗口的创建和操作函数介绍

       ① HWND CreateWindow(WNDCLASS &wndCls);

       WNDCLASS结构定义窗口的基本属性,如位置、大小、标题、风格等,见上面所述。该函数为窗口运行时的结构分配内存,初始化属性,并返回窗口结构的指针。

       ② BOOL ShowWindow(HWND hWnd);

       显示一个窗口。其工作包括:挂起以前的活动区;保存窗口的覆盖区域的图形;如果是有WS_POPUP属性的窗口,须设定屏幕和窗口的活动区;向该窗口的消息处理函数传递WM_ONSHOW消息(事实上是直接调用该函数),以提供编程人员在窗口上绘制控件以外的图形的机会;如果是没有WS_NOSTATEBAR的窗口,添加Statebar控件;依次调用窗口中各控件的绘制函数以显示控件;设第一个有焦点控件为窗口当前的焦点控件。

       ③ BOOL CloseWindow(HWND hWnd);

       关闭一个窗口。其工作包括:向该窗口的事件处理函数发送WM_CLOSE消息,如果返回FALSE则退出本函数,如果返回TRUE则继续以下工作 ——恢复窗口覆盖区图形;释放POPUP类窗口的屏幕活动区和窗口活动区; 依次释放该窗口包含的控件;隐藏光标;释放该窗口结构占用的内存;向上层窗口发送WM_TOPWNDCLOSE的消息,该消息用于下层窗口更新需要自动变化的界面,如股票实时大盘数据表;设置该窗口的前一层窗口为应用程序的顶层窗口。



www.55dianzi.com        ④ WNDPROC函数指针类型

       typedef BOOL (*WNDEVENTHANDLE)

       (HWND hWnd, U16 msgType, U32 id,P_U32 data, U32 size);

       ⑤ DefWndProc(HWND hWnd, U16 msgType, U32 id,P_U32 data, U32 size);

       处理如POPUP窗口区外的点击自动关闭窗口之类的消息和行为。

       ⑥U32 WndAddCommand(HWND hWnd, P_S8 cmdName, U16 cmdLen, P_U8 cmDICon);

       向有状态条控件的窗口增加应 用程序定义的命令。命令出现在状态条的弹出菜单中。该函数返回一个唯一的命令ID,用于窗口处理WM_COMMAND消息时区分命令。

       ⑦ BOOL WndDelCommand(HWND hWnd, HCMD cmdId);

       删除一条命令。

       ⑧ U32 WndSetCommand(HWND, U32 cmdId, P_S8 newCaption);

       修改一条命令。

       ⑨ 其它函数。因篇幅原因,不能完全列出和解释所有的窗口操作函数。

       3.3 控件的实现

       (1)控件的基本结构


       我们使用控件的基本结构定义各类控件的公共属性。具体的控件结构在此基础上扩展,以包含其它属性。以下论述控件的基本属性。

       首先,在窗口的显示过程中,各控件的外观由自己绘制,因而各种控件需要一个绘制函数。该函数在定义具体控件时定义,在控件结构中保留该类函数的指针。其次,各种控件需要各自的消息处理函数,该函数的指针也保存在结构中。最后,一些控件可能会动态分配内存空间以保存自身的数据。控件需要在被释放时释放这样的内存,因而控件结构中也保存控件释放函数的指针。

       控件是窗口上的一个可操作区域,主要由笔输入来操作,因而控件需要响应笔操作的活动区。各种控件的活动区数量不同,因而在控件结构中需要保存一个可增长的活动区列表;但控件的屏幕区域可能覆盖部分窗口中的其它活动区(如其它控件),从而造成控件操作的混乱,因此需要一个控件占用区域的活动区,以屏蔽其它可能造成干扰的活动区。

       由于我们需要各种控件能在定义新控件时使用,即作为新控件的子控件,在控件的结构中,须保存子控件列表。各类控件的绘图、消息处理和释放函数,必须为控件系统定义的相应的缺省处理函数。这些缺省处理函数根据控件的子控件列表,首先调用子控件的相应函数。

       (2)具体控件定义的方法

       ① 一个具体的控件对应一个特定的结构。该结构首先包含控件的基本结构,其次定义该控件所需要的其它属性。如按键控件,需要有按键的类型、显示的文本或图形、笔操作所需的活动区ID和按下状态等属性。

       ② 定义控件的绘制、消息处理和释放函数。

       ③ 定义该控件的创建函数,如CreateButton()。在该函数的参数中包含该控件所需的初始属性、参数中标准的部分是控件的位置和大小。该函数初始化该控件结构的属性,包括初始化在基本控件结构中的控件绘制、消息处理和释放函数指针,使之指向相应的函数。

www.55dianzi.com
       ④ 定义操作控件、存取控件中数据所需的其它函数。

       (3)系统预定义的控件

       在系统中,已经使用这种定义方式定义了一些常用的控件。它们有:

       ① 按键:Button。文本或图形按键,Check方式按键。

       ② 标签:Label。

       ③ 复选框:CheckBox。

       ④ 单选框:RadioBox。

       ⑤ 组合框:CombBox。

   &nbs p;   ⑥ 滚动条:ScrollBar。水平或垂直,简单类型滚动条可作为SPIN使用。

       ⑦ 编辑框:TextBox。单行或多行,可编辑或不可编辑,有选块功能。

       ⑧ 列表框:ListBox。单列或多列,选项可带有图标。

       ⑨ 状态条:StateBar。含有命令菜单弹出按键、窗口关闭按键(在窗口关闭按键上显示窗口标题)、输入法按键、输入法选择按键、日期和时间显示区。

       日历控件:CANlendar。显示任意年月的日期,可切换公历和农历。组合日历控件:Date。单行显示日期,有弹出日历的按键。电子表格:Excel。显示数据库的记录,可按每列对应的字段排序。组控件:Group。用于控件分组。

       3.4 菜单系统

       菜单是通过在POPUP窗口中加入ListBox控件实现的。菜单窗口的消息处理函数在用户选择列表框项目后自动关闭,并向应用程序发送WM_ MENUCLICK消息。该消息带有选项的序号。

上一页  [1] [2] 


本文关键字:嵌入式  开发  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术

《PPSM嵌入式RTOS中的窗口系统开发》相关文章>>>