Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24994
  • 博文数量: 12
  • 博客积分: 215
  • 博客等级: 二等列兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-12 10:23
文章分类

全部博文(12)

文章存档

2015年(1)

2010年(11)

我的朋友
最近访客

分类: 嵌入式

2010-04-26 17:14:54

1SGUI基本框架

1.1   简单的程序

 

#include "sgui.h"

 

class sApp:public sApplication{

public:

      sApp();  

public:

    virtual void init(int argc,char *argv[]);

};

 

void sApp::init(int argc,char *argv[])

{

      userwindow dlg;                                   //用户自定义的窗口类

      dlg.sgui_window_create();                      //第一个窗口,可不需要参数

}

 

1.2 用户程序的入口

 

用户程序的入口为应用程序类(sApplication)init函数。

 

sApplication派生类中,应继承其父类的void init(int argc,char *argv[])函数。此函数的参数意义与C中的main函数一致的。

 

        可以从此函数的参数中接收启动应用程序时所传递的参数。

 

1.3 SGUI类层次关系

SGUI的根类是sObject,SGUI中大多数的类是从基类sObject派生出的.它定义SGUI类对象的基本行为.可能此类对用户程序没有多大的关联度.但在SGUI内部起着重要的作用。  

 

 

2:SGUI基础类

2.1 sObject

       sObject类为SGUI体系的根类。它对用户程序没有多大联系。只有一个函数,所有的派生类都可以访问此函数。

 

void sgui_get_version();

SGUI的版本号。可能通过读取此版本号来获取SGUI动态库的信息。

目前SGUI的版本号字符串中包括了开始日期,最后修改日期。及作者

“sgui ver1.0 \n (C) 2009-4 \n (M)2009-9-15 \n anking.he”

       Sgui ver 1.0    :      SGUI版本号

       (C) 2009-4     :      开始日期

       (M)  2009-9-15 : 最后修改日期

       Ankine.he      : 作者

      

 

2.2  sApplication

sApplication类是应用程序类,这个类的实例的生命周期从应用程序开始到应用程序结束。它负责与GUI窗口管理器沟通信息,如果窗口管理器出现问题则此类将不进入init成员函数,用户程序需继承此类。并且规定类名为sApp,且此类必须在文件main.cppmain.h当中。

 

        sApplication类只有一个类成员函数init,对用户编程来说没有实际意义。

 

    virtual void init(int argc,char *argv[]);  

        这个函数是在SGUI体系当中,用户程序的入口函数。用户类需要重新书写此函数。

   

   

 

 

   

2.3 sCwnd

   

    sCwnd类是窗体的基类,它由sEvent派生出来。它提供消息类型解析,控件刷新,自刷新的虚函数。窗体相关控件类需要继承这些函数。

   

virtual V_EVENT_TYPE sgui_message_parse(struct g_message_function_param *message);

 

消息解析函数,这在制作控件的工作中需要使用此函数。一般的应用程序编制工作中不需要使用此函数。它负责解析传进本控件的事件,并由返回值送出所对应的消息类型。

 

virtual void sgui_control_refresh(g_window_draw_area *wdraw);

 

窗体控件刷新函数,只在控件编制工作中使用。控件刷新时调用是这个函数。所以控件必须含有此函数,并且做出正确响应。参数为刷新的区域。这个刷新消息会流经每一个控件,所以需要控件自己判断一下,刷新区域是不是自身所在的区域。如果是自身所在的区域,那则重绘本区域,否则就没有重绘这个必要了。

 

virtual void sgui_control_refresh_self();

 

自刷新函数。本函数将把控件自己的位置参数传递给刷新函数。应用程序可以调用控件的此函数来产生控件刷新。

 

int sgui_pos_compare(int _x,int _y,int _width,int _height,g_window_draw_area *area);

 

位置判断函数,在控件编制工作中使用。参数为控件的四个基本参数和一个刷新区域结构体指针。

返回值 1:为包含或相交关系        0:不相交

 

 

2.4 事件类型,消息类型

      

SGUI体系里消息是产生事件所需的前提条件。消息是由外部条件或用户程序产生的,经由窗口,控件处理后产生出相应的事件,如果不是系统定义的消息,则产生的事件是未知的,用户只能从窗口事件响应函数当中判断消息来源来决定下一步动作。

 

SGUI中的事件类型

 

#define SGUI_EVENT_BUTTON_CLICKED   201

按钮按回车,或者点击,在ver1.0中没有使用到这个类型

 

#define SGUI_EVENT_EDIT_ENTER         202

编辑框中按回车键

 

#define SGUI_EVENT_ESC                      203

#define SGUI_EVENT_EDIT_ESC         SGUI_EVENT_ESC

在焦点控件上,按ESC

 

#define SGUI_EVENT_LIST_SELECT         204

列表框控件的选择事件(SGUI 1.0中未使用到)

 

#define SGUI_EVENT_NULL                205

无事件类型,有的控件对消息不理会时,将做出无事件类型判断

 

#define SGUI_EVENT_CLICKED          206

#define SGUI_EVENT_ENTER            SGUI_EVENT_CLICKED

在控件上按回车,产生的事件

 

#define SGUI_EVENT_NEXT_CONTROL      207

下一个焦点控件的事件

 

#define SGUI_EVENT_PREV_CONTROL      208

上一个焦点控件的事件

 

#define SGUI_EVENT_GET_FOCUS           209

控件获取焦点时报告的事件,用户可以使用此事件来做先前判断

 

#define SGUI_EVENT_LOST_FOCUS          210

控件失去焦点时报告的事件

 

#define SGUI_EVENT_ON_CHAR                  211

按键事件,一般不包括回车,上下左右键,这个具体得看控件的规则,SGUI不规定此规则。

 

#define SGUI_EVENT_KEY_UP                    212

按键抬起事件,在SGUI 1.0中未使用到

 

#define SGUI_EVENT_KEY_STILL_DOWN          213

键一直按下事件,在SGUI 1.0中未使用到

 

#define SGUI_EVENT_WINDOW_CLOSE      214

关闭窗口事件

 

#define SGUI_EVENT_UNKNOW                         215

未知事件类型

 

 

 

SGUI中的消息类型

 

#define SGUI_MESSAGE_WINDOW_CLOSE             100

窗口关闭消息

 

#define SGUI_MESSAGE_KEY_DOWN                  101

键盘按键按下消息,这一般是重复键消息,也就是连续扫描后,非第一次按键按下。

 

#define SGUI_MESSAGE_KEY_UP                        102

键盘按键抬起消息 

 

#define SGUI_MESSAGE_KEY_PRESS                    103

按键按键按下消息

 

#define SGUI_MESSAGE_TIMER                        104

定时器消息,在SGUI.0中未使用

 

#define SGUI_MESSAGE_WINDOW_PAINT             105

窗口重绘消息

 

#define SGUI_MESSAGE_GET_FOCUS                   106

控件获取焦点的消息,只在SGUI内部使用。

 

#define SGUI_MESSAGE_LOST_FOCUS                 107

控件失去焦点的消息,只在SGUI内部使用。

 

 

键 码

 

这里是SGUI体系里规定的F60键盘按键的内码及宏定义。

#define SGUI_KEY_ENTER      28                  //回车键

#define SGUI_KEY_RIGHTSHIFT       54           //这个键未使用到

#define SGUI_KEY_LEFTSOFT          15           //左软键

#define SGUI_KEY_BACKSPACE 14           //也有叫右软键,在输入框里起删除作用

#define SGUI_KEY_LEFT         105                //向左健

#define SGUI_KEY_UP             103                //向上键

#define SGUI_KEY_RIGHT      106                //向右键

#define SGUI_KEY_ESC              1                   //ESC键,在以后的版本中可能会当作播号键

#define SGUI_KEY_DOWN      108                //向下键

#define SGUI_KEY_1               2                   //1键

#define SGUI_KEY_2               3                   //2

#define SGUI_KEY_3               4                   //3

#define SGUI_KEY_4               5                   //4

#define SGUI_KEY_5               6                   //5

#define SGUI_KEY_6               7                   //6

#define SGUI_KEY_7               8                   //7

#define SGUI_KEY_8               9                   //8

#define SGUI_KEY_9               10                  //9

#define SGUI_KEY_KPPLUS       78               //*

#define SGUI_KEY_0               11                  //0

#define SGUI_KEY_DOT             52             //#

#define SGUI_KEY_F1             59                  //F1

#define SGUI_KEY_F2             60                  //F2

#define SGUI_KEY_F3             61                  //F3

 

#define SGUI_KEY_DESKTOP    73        //红色的开关机键,可用来切换到桌面,如果长按就被系统认为是关机键。短按则认为是桌面键,切换时由管理器自动切换,不需要用户程序做任何处理。

 

 

阅读(970) | 评论(0) | 转发(0) |
0

上一篇:SGUI 编程文档1

下一篇:ubuntu自动挂载分区

给主人留下些什么吧!~~