Linux/XWindow的api函数介绍

     **********************************
     *     系统函数                    *
     **********************************

-----------------------------------
名称  GetScreenMode
原型  int GetScreenMode (void)
描述  得到当前屏幕的显示方式
      GP1288支持3种显示方式:单色、四灰阶、十六灰阶
      返回值:1 单色    2 四灰阶    4 十六灰阶
      出错返回:-1
参见  SetScreenMode
-----------------------------------
名称  SetScreenMode
原型  int SetScreenMode (int bpp)
描述  设置屏幕显示方式
      GP1288支持3种显示方式:单色、四灰阶、十六灰阶
      bpp=1 单色  bpp=2 四灰阶  bpp=4 十六灰阶
      返回值:0 成功
      出错返回:-1
参见  GetScreenMode
-----------------------------------
名称  ResetScreen
原型  void ResetScreen (void)
描述  初始化Microwindow的显示引擎,并重绘屏幕
参见 
-----------------------------------
名称  SetDefaultMenuWindow
原型  void SetDefaultMenuWindow (HWND hwnd)
描述  设置缺省的菜单控制窗口。这是MW的特殊函数。
      当有多个窗口控件时,最好设定此函数,以使软键盘上的“菜单”键被按下时,显示正确的菜单内容。
      菜单消息是WM系统内部产生的,AP无需处理。
      如果 hwnd 设为NULL时,默认为系统缺省的最上层窗口。
      要注意的是,当设置后,AP退出时,要再将其恢复为NULL。
参见  SetDefaultSearchWindow,SetDefaultSwitchWindow,SetDefaultKeyWindow
-----------------------------------
名称  SetDefaultSearchWindow
原型  void SetDefaultSearchWindow (HWND hwnd)
描述  设置缺省的查询控制窗口。这是MW的特殊函数。
参见  SetDefaultMenuWindow,SetDefaultSwitchWindow,SetDefaultKeyWindow
-----------------------------------
名称  SetDefaultSwitchWindow
原型  void SetDefaultSwitchWindow (HWND hwnd)
描述  设置缺省的切换控制窗口。这是MW的特殊函数。
      WM_SWITCH_OUT 消息在任务切换出时产生
      WM_SWITCH_IN  消息在任务切换回来时产生
参见  SetDefaultMenuWindow,SetDefaultMenuWindow,SetDefaultKeyWindow
-----------------------------------
名称  SetDefaultKeyWindow
原型  void SetDefaultKeyWindow (HWND hwnd)
描述  设置缺省的按键响应控制窗口。这是MW的特殊函数。
参见  SetDefaultMenuWindow,SetDefaultSearchWindow,SetDefaultSwitchWindow
-----------------------------------
名称 
      GetDefaultMenuWindow
      GetDefaultSearchWindow
      GetDefaultSwitchWindow
      GetDefaultKeyWindow
原型 
      HWND GetDefaultMenuWindow (void)
      HWND GetDefaultSearchWindow (void)
      HWND GetDefaultSwitchWindow (void)
      HWND GetDefaultKeyWindow (void)
描述  得到当前的处理菜单(查询、任务切换、按键响应)的主控窗口,返回句柄号
参见  SetDefaultMenuWindow
-----------------------------------
名称  OpenClipboard
原型  BOOL OpenClipboard (HWND hOwner)
描述  打开剪贴板。系统只有一个剪贴板。
      hOwner 欲打开剪贴板的窗口句柄
      返回值:成功返回TRUE,失败返回FALSE
参见  CloseClipboard
-----------------------------------
名称  CloseClipboard
原型  BOOL CloseClipboard (VOID)
描述  关闭剪贴板。打开剪贴板后必需关闭。
      返回值:成功返回TRUE,失败返回FALSE
参见  OpenClipboard
-----------------------------------
名称  ReadClipboard
原型  BOOL ReadClipboard (char *buf, int buf_size)
描述  读出剪贴板的内容
      buf 读出的内容
      buf_size 读出长度
      如果读出长度小于剪贴板中的数据长度,则读出buf_size-1长的字串,并以'\0'为结束
      返回值:成功返回TRUE,失败返回FALSE
参见  WriteClipboard
-----------------------------------
名称  WriteClipboard
原型  BOOL WriteClipboard (char *buf)
描述  向剪贴板写入内容
      buf 欲写入的字串,以'\0'为结束
      返回值:成功返回TRUE,失败返回FALSE
参见  ReadClipboard
-----------------------------------
名称  GetClipboardSize
原型  long GetClipboardSize (void)
描述  得到当前剪贴板中的数据长度
      返回值:数据长度
参见 
-----------------------------------
名称  IsClipboardEmpty
原型  BOOL IsClipboardEmpty (void)
描述  检测剪贴板是否为空
      返回值:空为TRUE,非空为FALSE
参见 
-----------------------------------
名称  EmptyClipboard
原型  BOOL EmptyClipboard (void)
描述  清空剪贴板内容
      返回值:成功返回TRUE,失败返回FALSE
参见 
-----------------------------------
名称  IsClipboardFormatAvailable
原型  BOOL IsClipboardFormatAvailable (UINT uFormat)
描述  检测剪贴板内数据的类型
      返回值:成功返回TRUE,失败返回FALSE
      现支持类型 : CF_TEXT,即目前只支持文本(其它类型以后再提供)
参见 
-----------------------------------
名称  SetClipboardData
原型  HANDLE SetClipboardData (UINT uFormat, HANDLE hMem)
描述  按照数据的类型向剪贴板写入内容
      uFormat 数据的类型
      hMem 数据的地址
      返回值:成功返回TRUE,失败返回FALSE
      现支持类型 : CF_TEXT
参见  GetClipboardDat
-----------------------------------
名称  GetClipboardData
原型  HANDLE GetClipboardData (UINT uFormat)
描述  按照数据的类型取得剪贴板数据地址
      返回值:成功返回地址,失败返回NULL
      uFormat 现只支持 CF_TEXT
参见  SetClipboardData
-----------------------------------
名称  SelectClipRgn
原型  int WINAPI SelectClipRgn(HDC hdc, HRGN hrgn)
描述  设置图形设备的客户显示区域,直接拷贝方式
      hdc: 图形设备的句柄
      hrgn: 区域数据指针
      返回值:成功返回区域类型,失败返回 NULLREGION(0xffffffff)
参见  ExtSelectClipRgn
-----------------------------------
名称  ExtSelectClipRgn
原型  int WINAPI ExtSelectClipRgn(HDC hdc, HRGN hrgn, int fnMode)
描述  设置图形设备的客户显示区域
      hdc     : 图形设备的句柄
      hrgn    : 区域数据指针
      fnMode  : 设置方式:
                RGN_COPY        直接拷贝
  RGN_AND         取hdc旧区域和hrgn的公共部分
  RGN_OR          hdc旧区域和hrgn 叠加
  RGN_XOR         hdc旧区域和hrgn 的不同部分
  RGN_DIFF        hdc旧区域和hrgn 相减
      返回值:成功返回区域类型,失败返回 NULLREGION(0xffffffff)
参见  SelectClipRgn
-----------------------------------
名称  SwitchTo
原型  void SwitchTo (char *fullpath, char *args)
描述  切换到另一个任务
      fullpath 另一任务的完整路径名称
      args 参数,如有多个参数中间用空格分隔
      我们推荐用SwitchTo和下面提到的QuitTo来切换MicroWindow的AP,因为MW的AP不在通常的任务
      管理中管理。如果切换的不是MW的AP,还是用系统的 exec,fork。
参见  QuitTo
-----------------------------------
名称  QuitTo
原型  void QuitTo (char *fullpath, char *args)
描述  退出当前的MW程序并切换到另一任务
参见  SwitchTo
-----------------------------------
名称  InputBox
原型  char *InputBox (char *buf, int buf_len, const char *text1, const char *text2, BOOL pwd_mask)
描述  用来获得用户输入文本的简单方法
      buf 保存用户输入文本的缓冲区
      buf_len 缓冲区长度
      text1 字符串1
      text2 字符串2
      pwd_mask 当输入是密码时,显示的是"*"来加以保护。
               TRUE 密码输入
               FALSE 非
      返回值:如取消输入返回NULL,否则返回字串长度
      注意:缓冲区可以为空,也可有预设值。如果你希望这个输入框上有预设的内容时,可以将其填到
           buf上。buf的长度最大为255。
参见 
-----------------------------------
名称  EnableBuzzer
原型  void EnableBuzzer (BOOL on)
描述  在系统的蜂鸣器开启时,使能当前AP的蜂鸣器
      on TRUE 使能   FALSE 关闭
      注意:此函数的使用不会影响到系统的蜂鸣器状态
参见  IsBuzzerOn
-----------------------------------
名称  IsBuzzerOn
原型  BOOL IsBuzzerOn (void)
描述  检测当前的蜂鸣器是否开启
      返回值:TRUE 开启  FALSE 关闭
参见  EnableBuzzer
-----------------------------------
名称  ControlBuzzer
原型  void ControlBuzzer (int freq, int duration)
描述  控制蜂鸣器以特定的频率和时间发音
      freq 发音频率  
      duration 持续时间
参见  Beep
-----------------------------------
名称  Beep
原型  void Beep (void)
描述  蜂鸣器发出“吡”的一声。这相当于用4K的频率,100的duration调用ControlBuzzer
参见  ControlBuzzer
-----------------------------------
名称  ControlRedLED
原型  void ControlRedLED (BOOL on)
描述  控制GP1288的红色LED灯
      on TRUE 开启    FALSE 关闭
      同样的,这也不会影响到系统对LED的设定
参见  ControlGreenLED
-----------------------------------
名称  ControlGreenLED
原型  void ControlGreenLED (BOOL on)
描述  控制GP1288的绿色LED灯
      on TRUE 开启    FALSE 关闭
参见  ControlRedLED
-----------------------------------
名称  ControlMotor
原型  void ControlMotor (BOOL on)
描述  控制GP1288的震动马达
      on TRUE 开启    FALSE 关闭
参见 
-----------------------------------
名称  ControlButton
原型  void ControlButton (int speed)
描述  在本任务内,控制键盘连续按键的响应速度
      speed 速度值,范围在-10到50之间由慢变快
      切换到其他任务后,响应速度恢复变为默认值
参见 
-----------------------------------
名称  SetLocalLanguage
原型  void SetLocalLanguage (int lang)
描述  在本任务内设置语言选项
      lang 0:大陆,GB码 1:台湾,Big5码  2:香港,Big5码  3:英文  -1:禁止切换
      当使用此函数设置语言后后,一般需要更新屏幕,通知控件他们的显示。
      实际上,这只是设置显示文字的方式,就是说,是用GB码还是Big5码的格式读取和显示汉字。
参见  GetLanguage
-----------------------------------
名称  GetLanguage
原型  int GetLanguage (void)
描述  得到语言设置的返回值
      返回值:lang 0:北京,GB码 1:台湾,Big5码  2:香港,Big5码  3:英文  -1:禁止切换
参见  SetLocalLanguage
-----------------------------------
名称  GetRegionCode
原型  int GetRegionCode (void)
描述  得到GP1288的区域号
      返回值:0:北京  1:台湾  2:香港  3:英文   -1:出错
参见 
-----------------------------------
名称  GetProductName
原型  int GetProductName (char *buf)
描述  得到产品名称
      buf 读出的产品名称
      返回值:如果buf==NULL  返回实际需要的长度
             否则,成功返回0;失败返回-1
参见  GetSerialNumber
-----------------------------------
名称  GetSerialNumber
原型  int GetSerialNumber (char *buf)
描述  得到GP1288的S/N(串号)
      buf 读出的S/N
      返回值:如果buf==NULL  返回实际需要的长度
             否则,成功返回0;失败返回-1
参见  GetProductName
-----------------------------------
名称  GetPanelKeys
原型  BOOL GetPanelKeys (BOOL bEnable)
描述  系统是否产生(UP,DOWN,LEFT,RIGHT,HOME,END)6个按键消息
      在GP1288上,我们将按键分组,这6个按键(就是方向键和边上两个键)归于PanelKeys组,可以
      通过程序设定是否起作用,即按下后是否发送按键消息,能被系统接收。其虚拟键值为:
       VK_UP 方向键上
       VK_DOWN 方向键下
       VK_LEFT 方向键左
       VK_RIGHT 方向键右
       VK_HOME HOME键,默认也是Holink键
       VK_END END键,默认是邮件键
      bEnable TRUE ,产生按键消息;FALSE 不产生按键消息
参见  GetSoftKeys
-----------------------------------
名称  GetSoftKeys
原型  BOOL GetSoftKeys (BOOL bEnable);
描述  系统是否产生目录、菜单、查找、计算、字典、切换、红外、录音的按键消息
      在GP1288上,我们将按键分组,这8个按键归于SoftKeys组,可以通过程序设定是否起作用,即按
      下后是否发送按键消息,能被系统接收。其虚拟键值为:
      VK_F1 软键盘上的目录键
        VK_F2 软键盘上的菜单键
        VK_F3 软键盘上的查找键
        VK_F4 软键盘上的计算键
        VK_F5 软键盘上的字典键
        VK_F6 软键盘上的切换键
        VK_LBUTTON 红外键
        VK_RBUTTON 录音键
      bEnable TRUE ,产生按键消息;FALSE 不产生按键消息       
参见  GetPanelKeys
-----------------------------------
名称  IsGetPanelKeys
原型  BOOL IsGetPanelKeys (void)
描述  系统是否允许PanelKeys起作用
      返回值:TRUE 起作用  FALSE 不起作用
参见  GetPanelKeys
-----------------------------------
名称  IsGetSoftKeys
原型  BOOL IsGetSoftKeys (void)
描述  系统是否允许目录、菜单、查找、计算、字典、切换、红外、录音键起作用
      返回值:TRUE 起作用  FALSE 不起作用
参见  GetSoftKeys
-----------------------------------
名称  InitXime
原型  #include<xime.h>
      HWND InitXime (HWND owner, InputMethod ime)
描述  以设定的方式初试化输入法
      要注意的是,凡是涉及到Xime的函数,都要包含 xime.h这个头文件
      owner 欲开启输入法的窗口句柄
      ime 输入法代表字
      返回值:输入法句柄值,出错返回NULL
      输入法代表字含义:
       XIME_NONE       最小化
       XIME_ASCII      ASCII字符输入
       XIME_SYMBOL     符号输入
       XIME_PHONE      电话符号输入
       XIME_CJ         繁体仓颉输入法
       XIME_BOSHIAMY   繁体注音
       XIME_HANDWRITE  手写输入
       XIME_SPCODE     大写符号
       XIME_PINYIN     全拼输入
       XIME_WUBI       五笔输入
       XIME_DEFAULT    系统默认输入法
       XIME_USER       自定义输入法
      输入法变化后会自动发出信息
       WM_XIME_MINIMIZE  输入法最小化
       WM_XIME_RESTORE   从最小化恢复
       WM_XIME_CHANGED   输入方式变化
      注意:调用初试化输入法的时间应在Winmain()中的CreatWindow或对话框建立后,并且
           InitXime只能被调用一次,除非你已经销毁过他。
参见  InitXimeEx
-----------------------------------
名称  InitXimeEx
原型  HWND InitXimeEx (HWND owner, InputMethod ime, int sub, int visible)
描述  用附加属性修饰的初试化输入法
      owner 欲开启输入法的窗口句柄
      ime 输入法代表字
      sub 0:默认符号  1:半角符号  2:全角符号
参见  InitXime
-----------------------------------
名称  SelectXime
原型  void SelectXime (InputMethod ime)
描述  在使用中改变输入法
参见  InitXime
-----------------------------------
名称  SelectXimeEx
原型  void SelectXimeEx(InputMethod ime, int sub)
描述  在使用中改变输入法,并有附加属性修饰
参见  SelectXime,InitXime,InitXimeEx
-----------------------------------
名称  SetXimeOwner
原型  HWND SetXimeOwner(HWND owner)
描述  在其他对话框中使用输入法时,要调用此函数设定。
      输入法作为一个控件,只能被一个窗体所使用。如果你想在另外一个窗口控件(比如对话框)中使
      用,必需为它设定新的属主。
      不过千万要记得,在销毁新属主前要将 owner 设回来。
      owner 新属主的句柄
      返回值:前次属主的句柄
参见 
-----------------------------------
名称  DestroyXime
原型  void DestroyXime(void)
描述  手工销毁输入法控件
参见  InitXime
-----------------------------------
名称  ReInitXime
原型  int ReInitXime (void)
描述  手工重新刷新输入法控件。
      这并没有破坏原有的句柄,只是重新刷新。
      当切换语言时需要这样手工刷新。
参见  InitXime
-----------------------------------
名称  GetSelectedIME
原型  InputMethod GetSelectedIME (void)
描述  返回当前的输入法输入类型
参见  InitXime
-----------------------------------
名称  GetXimeSubStyle
原型  int GetXimeSubStyle (void)
描述  返回当前输入法的附加修饰类型
参见  InitXime
-----------------------------------
名称  GetXimeHandler
原型  HWND GetXimeHandler (void)
描述  返回输入法控件的句柄
      必需在InitXime之后才能调用。
      还要注意的是,如果是自定义的输入法,请不要调用此函数。
参见 
-----------------------------------
名称  PopupXimeMenu
原型  void PopupXimeMenu (int x, int y)
描述  输入法的弹出菜单(就是那个有各种输入法选项的菜单)的位置
      x 横坐标位置   y 纵坐标位置
参见  EnableXimeMinimize
-----------------------------------
名称  EnableXimeMinimize
原型  int EnableXimeMinimize (BOOL bEnable);
描述  在输入法弹出菜单上激活(取消)最小化选项
      缺省状态下,输入法控件弹出菜单是没有最小化选项的,
      调用此函数可以使其出现
      bEnable TRUE 显示最小化选项  FALSE 隐藏最小化选项
      返回值:0 成功  -1 失败
参见  PopupXimeMenu
-----------------------------------
名称  DefXimeProc
原型  LRESULT CALLBACK DefXimeProc (HWND, UINT, WPARAM, LPARAM)
描述  缺省的输入法处理部件。
      如果您写了外挂的自定义输入法,就应该使用DefXimeProc()作为缺省的消息处理部件,在
      UserXimeProc()中替代DefWindowProc()
参见  DefWindowProc
-----------------------------------

     **********************************
     *     用户界面函数                 *
     **********************************

-----------------------------------
名称  WinMain
原型  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
描述  此函数被系统呼叫,作为MicroWindow程序的初试化入口点,相当于C程序中的main()
      hInstance 该程序的实例句柄
      hPrevInstance 其他实例的句柄,但实际上其总为NULL
      szCmdLine 用于运行程序的命令行,某些AP使用这个参数以在程序启动时将文件加载到内存
      iCmdShow 程序最初显示的方式
      实际上,我们不需要在WinMain时考虑这些参数,这些参数实际上是被MicroWindow传递并使用的
      返回值:WinMain带来的消息循环在接收到WM_QUIT时退出,同时返回退出代码
             如果在消息循环之前即退出,返回0
参见  CreateWindow,RegisterClass,ShowWindow,UpdateWindow
-----------------------------------
名称  RegisterClass
原型  ATOM WINAPI RegisterClass(CONST WNDCLASS *lpWndClass)
描述  注册窗口类
      窗口总是在窗口类的基础上创建的,窗口类用以标识处理窗口消息的窗口过程
      在为程序创建窗口之前,必需先调用RegisterClass注册一个窗口类
      lpWndClass 一个指向类型为WNDCLASS 的指针结构
      我们要在调用此函数前,先声明一个WNDCLASS 的结构,并为其相关域覆值,例如
      WNDCLASS wndclass;
      WNDCLASS 在winuser.h中定义,结构如下:
         typedef struct tagWNDCLASSA {
           MWLIST      link;           //
           UINT        style;          //类风格
           WNDPROC     lpfnWndProc;    //基于这个类所创建窗口所使用的窗口过程的地址
           int         cbClsExtra;     //
           int         cbWndExtra;     //
           HINSTANCE   hInstance;      //实例句柄
           HICON       hIcon;          //图标
           HCURSOR     hCursor;        //光标
           HBRUSH      hbrBackground;  //背景
           LPCSTR      lpszMenuName;   //窗口类菜单名称
           LPCSTR      lpszClassName;  //窗口类的名称
           CHAR        szClassName[40];//
         } WNDCLASS
      类风格中,每一种风格为一位,可以由位“或”来进行组合:
        CS_VREDRAW            窗口纵向变化后重绘
        CS_HREDRAW            窗口横向变化后重绘
        CS_DBLCLKS            发送双击鼠标消息
        CS_OWNDC              给该类中的每个窗口分配一个唯一的设备描述表,只需要初始化设备描述
                              表一次,DC将一直存在,直到窗口被删除
        CS_CLASSDC            给该类中的窗口只分配一个共享的设备描述表号
        CS_PARENTDC           使子窗口剪贴板区域与父窗口重合
        CS_NOCLOSE            窗口菜单上不出现“关闭”选项
        CS_SAVEBITS           在窗口重绘时,不发WM_PAINT消息,而是用保存的窗口位图刷新
        CS_BYTEALIGNCLIENT        
        CS_BYTEALIGNWINDOW
        CS_GLOBALCLASS        该窗口类具有全局属性
       实际上,目前版本的MicroWindow只是模仿Windows的特性,这些风格中,目前只有CS_OWNDC
       是真正需要设置的。 (因为窗体尺寸不会变化,也没有双击,剪贴板也只有一个...
参见  CreateWindow, CreateWindowEx, ShowWidow
-----------------------------------
名称  CreateWindow
原型  HWND WINAPI CreateWindow(LPCSTR lpClassName, LPCSTR lpWindowName,DWORD dwStyle,
 int x, int y, int nWidth, int nHeight,HWND hwndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
描述  这个函数在内存区域内开辟一个窗口。
      它同时定义了窗口的类、标题、风格、初始位置及大小等。
      lpClassName      指向注册的类,类必需由 RegisterClass 来注册
      lpWindowName     窗口的名称
      dwStyle          窗口的风格
      x                窗口左上角的横标
      y                窗口左上角的纵标
      nWidth           窗口宽度
      nHeight          窗口高度
      hWndParent       父窗口句柄,如是最高级窗口,则为NULL
      hMenu            菜单或子窗口句柄
      hInstance        程序的实例句柄,是该是由WinMain传递过来的
      lpParam          可以用这个指针访问以后向饮用的程序中的数据
      注册类可以是新注册的类名称,也可以是系统中已经指定的类,比如:
       BUTTON          按钮
       COMBOBOX        组合框
       EDIT            编辑框
       LISTBOX         列表框
       SCROLLBAR       滚动条
       STATIC          静态文本  等
      窗口可以有多种风格(Style),这也是可以按位组合的一些选项:
       WS_BORDER        窄边框
       WS_CAPTION       有标题栏
       WS_CHILD         创建子窗口。此风格不能与WS_POPUS共用
       WS_CHILDWINDOW   与 WS_CHILD 相同
       WS_CLIPCHILDREN  在父窗口绘图时不考虑被子窗口占据的部分
       WS_CLIPSIBLINGS  使子窗口互相关联,当一个子窗口发出WM_PAINT消息时,其它重叠窗口不受影响
       WS_DISABLED      不能接受用户输入的“死”窗口
       WS_DLGFRAME      对话框型的边框
       WS_GROUP         指定第一群组控制
       WS_HSCROLL       有横向的滚动条
       WS_ICONIC        初始化为最小化的窗口
       WS_MAXIMIZE      初始化为最大化的窗口
       WS_MAXIMIZEBOX   有最大化按钮
       WS_MINIMIZEBOX   同WS_ICONIC
       WS_OVERLAPPED    重叠类型的窗口
       WS_POPUP         弹出类型的窗口
       WS_SYSMENU       标题栏上有菜单
       WS_TILED         同WS_OVERLAPPED
       WS_VISIBLE       初使化即为可见的
       WS_VSCROLL       有纵向的滚动条
      返回值:成功返回新窗口句柄,失败返回NULL。
      在返回前,其会发出WM_CREATE的消息给窗口过程。      
参见  CreateWindowEx, RegisterClassEx
-----------------------------------
名称  CreateWindowEx
原型  CreateWindowEx(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName,DWORD dwStyle,
 int x, int y, int nWidth, int nHeight,HWND hwndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
描述  此函数在CreateWindow的基础上,额外多定义了窗口的扩展风格,除此外等同于CreateWindow
      扩展风格定义在Winuser.h中,共有:
      WS_EX_DLGMODALFRAME       窗口具有双层边框 
      WS_EX_NOPARENTNOTIFY      子窗口在创建和销毁时,不向其父窗口发送WM_PARENTNOTIFY消息
      WS_EX_TOPMOST             该窗口出现在最顶级,甚至当其不在焦点时都如此
      WS_EX_ACCEPTFILES         接受拖拽文件
      WS_EX_TRANSPARENT         透明窗口,直到其下层窗口被重绘时其才重绘
      WS_EX_MDICHILD            产生MID窗口
      WS_EX_TOOLWINDOW          产生一个工具窗口,并不出现在任务栏上
      WS_EX_WINDOWEDGE          指定窗口边框的边缘加高
      WS_EX_CLIENTEDGE          指定窗口边框的边缘下沉
      WS_EX_CONTEXTHELP         窗口标题栏上,当用户点击时出现“这是什么”的光标
      WS_EX_SHOWKEYB            指定窗口边框边缘
      WS_EX_RIGHT               右对齐窗口
      WS_EX_LEFT                左对齐窗口,这是默认值
      WS_EX_RTLREADING          使用由右至左的阅读排列文字格式
      WS_EX_LTRREADING          使用由左至右的阅读排列文字格式
      WS_EX_LEFTSCROLLBAR       如是 RTLREADING 方式,纵向滚动条放在左边
      WS_EX_RIGHTSCROLLBAR      默认的滚动条在右边
      WS_EX_STATICEDGE          不接受用户输入的静态类型
      WS_EX_APPWINDOW           当窗口可见时,强制顶级窗口出现在任务条上
      WS_EX_LAYERED            
      WS_EX_OVERLAPPEDWINDOW    WS_EX_CLIENTEDGE 与WS_EX_WINDOWEDGE  风格的合集
      WS_EX_PALETTEWINDOW       WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW 与WS_EX_TOPMOST风格的合集
     返回值:成功返回新窗口句柄,失败返回NULL。
     在返回前,其会发出WM_CREATE的消息给窗口过程。  
参见  CreateWindow
-----------------------------------
名称  ShowWindow
原型  BOOL WINAPI ShowWindow(HWND hwnd, int nCmdShow)
描述  使一个指定窗口被显示
      hwnd  窗口句柄
      nCmdShow 指定窗口显示方式
      在首次调用时,该参数是由WinMain函数中传递过来的,在后续调用中,可以使用:
       SW_HIDE                隐藏此窗口并激活另外的窗口
       SW_SHOWNORMAL          激活并显示此窗口 
       SW_NORMAL             
       SW_SHOWMINIMIZED       激活并最小化显示此窗口
       SW_SHOWMAXIMIZED       激活并最大化显示此窗口
       SW_MAXIMIZE            最大化此窗口
       SW_SHOWNOACTIVATE      显示此窗口并不影响其他激活的窗口
       SW_SHOW                在当前位置以其窗口的大小激活并显示 
       SW_MINIMIZE            最小化此窗口
       SW_SHOWMINNOACTIVE     以最小化方式显示窗口,并不影响其他激活的窗口
       SW_RESTORE             以其原始尺寸激活并显示
       SW_SHOWDEFAULT        
       SW_MAX                 以最大化方式显示窗口
      返回值:如此窗口当前为可见,返回非0值;如为隐藏,返回0     
参见  WinMain,CreateWindow
-----------------------------------
名称  UpdateWindow
原型  BOOL WINAPI UpdateWindow(HWND hwnd)
描述  此函数通过给窗口过程发送WM_PAINT消息,使窗口的客户区被绘制
      hwnd  窗口句柄
      返回值:成功返回TRUE,失败返回FALSE
参见  ShowWindow
-----------------------------------
名称  DestroyWindow
原型  BOOL WINAPI DestroyWindow(HWND hwnd)
描述  销毁指定的窗口
      此函数发出WM_DESTROY消息给窗口进程,释放和去除该窗口的键盘焦点。
      同时也销毁窗口的菜单、记数器等,如果该窗口是父窗口,也自动的销毁其关联的子窗口,
      及其由CreateDialog创建的对话框。
      hwnd  要销毁的窗口句柄
      返回值:成功返回TRUE,失败返回FALSE
参见  CreateWindow,CreateWindowEx,CreateDialog
-----------------------------------
名称  IsWindow
原型  BOOL WINAPI IsWindow(HWND hwnd)
描述  该函数判断指定的句柄是否是存在的窗口
      hwnd  要进行判断的窗口句柄
      返回值:如是已存在窗口返回TRUE,否则返回FALSE
参见 
-----------------------------------
名称  DefWindowProc
原型  LRESULT WINAPI DefWindowProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
描述  该函数调用缺省的窗口进程处理一个窗口应用未处理的消息
      其以同样的参数被窗口过程所调用
      一般来说我们必需在消息循环中调用此函数以处理系统事件,比如:
       {
       switch(message){
         case XXX:
           ......
         case YYY:
           ......
       }
       return DefWindowProc(hwnd, msg,wParam,lParam)
       }
      hwnd   指向接受消息的窗口过程
      msg    消息
      wParam 由MAG结构传递的额外参数
      lParam 由MAG结构传递的额外参数
      返回值:依赖于消息产生的过程处理结果
参见  CallWindowProc, DefDlgProc
-----------------------------------
名称  CallWindowProc
原型  LRESULT WINAPI CallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
描述  将消息传递给指定的窗口处理过程
      lpPrevWndFunc  指向改变以前的窗口过程
      hWnd           接受消息的窗口过程句柄
      Msg            希望处理的消息
      wParam         消息的第一个参数
      lParam         消息的第二个参数
      返回值:依赖于消息处理的结果
      SetWindowLong 函数可以通过改变窗口关联的处理过程,来使系统使用新的窗口过程来替代旧
      的。这样的应用必需要把它在新窗口过程中未处理的消息通过CallWindowProc来传递给原来的
      窗口过程。
      CallWindowProc的程序处理实际上非常简单:
       CallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam,  LPARAM lParam)
       {
          return (*lpPrevWndFunc)(hwnd, Msg, wParam, lParam);
       }
参见  SetWindowLong
----------------------------------- 
名称  SetWindowLong
原型  LONG WINAPI SetWindowLong(HWND hwnd, int nIndex, LONG lNewLong)
描述  此函数通过设置指定窗口的扩展窗口内存的32位长整型偏移值,来重新设定窗口属性
      hwnd     指定窗口的句柄
      nIndex   设定属性的索引
      lNewLong 指定要设定替换的值
      索引在Winuser.h中定义,窗口扩展内存的32位长整型数偏移位置,包括:
       GWL_EXSTYLE       新设定窗口的扩展风格
       GWL_EXSTYLE       新设定窗口风格
       GWL_WNDPROC       用新的窗口处理过程替换原来的
       GWL_HINSTANCE     新设定窗口实例句柄
       GWL_ID            窗口ID
       GWL_USERDATA      新的关联此窗口的32位的值
      用GWL_WNDPROC 索引,lNewLong要用long强制转换的新窗口过程的地址。
      这样就可以使指定窗口用这个新的窗口过程来预先处理,但如想再用原来的窗口过程,
      则要使用函数CallWindowProc
      返回值:成功返回以前的32位整型数,失败返回0
参见  CallWindowProc,GetWindowLong
-----------------------------------
名称  SetLayeredWindowAttributes
原型  BOOL WINAPI SetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags)
描述  目前只有此函数原型,但尚未支持
参见 
-----------------------------------
名称  GetWindowLong
原型  LONG WINAPI GetWindowLong(HWND hwnd, int nIndex)
描述  得到指定窗口的信息,即指定的扩展窗口内存中的32位长整型数值
      hwnd   指定窗口的句柄
      nIndex 窗口扩展内存的32位长整型数偏移位置
      返回值:成功返回指定偏移的32位长整型数值,失败返回0
参见  SetWindowLong
-----------------------------------
名称  GetWindowWord
原型  WORD WINAPI GetWindowWord(HWND hwnd, int nIndex)
描述  这个函数实际上在32位模式下是作废的,要应用GetWindowLong替代
参见  GetWindowLong
-----------------------------------
名称  SetWindowWord
原型  WORD WINAPI SetWindowWord(HWND hwnd, int nIndex, WORD wNewWord)
描述  这个函数实际上在32位模式下是作废的,要应用SetWindowLong替代
参见  SetWindowLong
-----------------------------------
名称  GetWindowTextLength
原型  int WINAPI GetWindowTextLength(HWND hwnd)
描述  如果当前窗口有指定标题栏,此函数得到此标题栏的文本长度
      hwnd  指定的窗口句柄
      返回值:成功返回长度,如果该窗口没有标题文本,返回0
参见  GetWindowText, SetWindowText
-----------------------------------
名称  GetWindowText
原型  int WINAPI GetWindowText(HWND hwnd, LPSTR lpString, int nMaxCount)
描述  拷贝指定窗口的标题栏的文本到指定的缓冲区
      hwnd      指定窗口的句柄
      lpString  指定的缓冲区
      nMaxCount 拷贝字串长度
      返回值:成功返回拷贝字串长度(不包含结尾的NULL),
             如窗口无标题栏、标题栏为空、或窗口句柄非法返回0
参见  GetWindowTextLength, SetWindowText
-----------------------------------
名称  SetWindowText
原型  BOOL WINAPI SetWindowText(HWND hwnd, LPCSTR lpString)
描述  改变当前窗口的标题栏文字
      hwnd  窗口句柄
      LPCSTR lpString  以NULL为结束的新标题栏文字串指针
      返回值:成功返回TRUE,失败返回FALSE
参见  GetWindowText
-----------------------------------
名称  MoveWindow
原型  BOOL WINAPI MoveWindow(HWND hwnd, int x, int y, int nWidth, int nHeight, BOOL bRepaint)
描述  改变指定窗口的位置和大小,这都是相对于屏幕上其左上角的位置而言的
      hwnd     窗口句柄
      x        新位置左上角横标
      y        新位置左上角纵标
      nWidth   宽度
      nHeigth  高度
      bRepaint 重绘标志,TRUE 重绘,FALSE不重绘
      返回值:成功返回TRUE,失败返回FALSE
参见  SetWindowPos,UpdateWindow
-----------------------------------
名称  SetWindowPos
原型  BOOL WINAPI SetWindowPos(HWND hwnd, HWND hwndInsertAfter, int x, int y, int cx, int cy, UINT fuFlags)
描述  改变窗口、弹出窗口、或子窗口的位置、大小
      hwnd              窗口句柄
      hwndInsertAfter   布局顺序句柄,它只能是下列值之一:
         SWP_SHOWWINDOW  显示窗口
         SWP_HIDEWINDOW  隐蔽窗口
         HWND_TOP        显示在多窗口前面
         HWND_BOTTOM     显示在多窗口后面
      x                 指定新窗口的左上角横标
      y                 指定新窗口的左上角纵标
      cx                指定新窗口的宽 
      cy                指定新窗口的高 
      fuFlags           指定窗口的位置、大小的旗标,它可以是下列值的组合: 
         SWP_NOMOVE      不改变窗口座标
         SWP_NOSIZE      不改变窗口大小
         SWP_NOZORDER    不改变窗口叠层次序
      返回值:成功返回TRUE,失败返回FALSE
      需要注意的是,如果你用了SetWindowLong来改变当前窗口的话,那就必须要用SetWindowPos来
      使它发生作用。
参见  MoveWindow
-----------------------------------
名称  GetCursorPos
原型  BOOL WINAPI GetCursorPos(LPPOINT lpPoint)
描述  得到屏幕上的光标位置
      lpPoint 指向一个POINT结构,使它接收屏幕的光标
      POINT结构定义如下:
       typedef struct tagPOINT {
          LONG x;
          LONG y;
       } POINT;
      就是光标的X,Y位置 
      返回值:如果得到光标,返回非零值;否则返回零
参见  SetCursor,SetCursorPos
-----------------------------------
名称  GetFocus
原型  HWND WINAPI GetFocus(VOID)
描述  得到正获得输入焦点的窗口句柄
      返回值:该窗口句柄
参见  SetFocus
-----------------------------------
名称  SetFocus
原型  HWND WINAPI SetFocus(HWND hwnd)
描述  使指定窗口获得输入焦点
      返回值:成功返回上次获得焦点的窗口句柄;如hwnd参数非法则失败返回0
参见  GetFocus
-----------------------------------
名称  SetForegroundWindow
原型  BOOL WINAPI SetForegroundWindow(HWND hwnd)
描述  激活一个窗口并将其显示在最上层
      当我们想显示错误信息或消息并立即通知用户时,就要调用这个函数
参见  GetForegroundWindow, SetActiveWindow
-----------------------------------
名称  GetForegroundWindow
原型  HWND GetForegroundWindow(VOID)
描述 
参见  GetActiveWindow,SetForegroundWindow
-----------------------------------
名称  SetActiveWindow
原型  HWND WINAPI SetActiveWindow(HWND hwnd)
描述  激活一个窗口,
参见 
-----------------------------------
名称  GetActiveWindow
原型  HWND WINAPI GetActiveWindow(VOID)
描述  得到正获得输入焦点的窗口的父窗口句柄
      返回值:该窗口句柄
参见  SetActiveWindow
-----------------------------------
名称  BringWindowToTop
原型  BOOL WINAPI BringWindowToTop(HWND hwnd)
描述  在这里,这个函数的效果和SetForegroundWindow相同
参见  SetForegroundWindow
-----------------------------------
名称  GetDesktopWindow
原型  HWND WINAPI GetDesktopWindow(VOID)
描述  得到根窗口句柄
      返回值:根窗口句柄
参见 
-----------------------------------
名称  GetParent
原型  HWND WINAPI GetParent(HWND hwnd)
描述  得到指定子窗口的父窗口句柄
      hwnd  指定子窗口句柄
      返回值:如成功返回其父窗口句柄;如果其无父窗口,返回NULL
参见 
-----------------------------------
名称  EnableWindow
原型  BOOL WINAPI EnableWindow(HWND hwnd, BOOL bEnable)
描述  使指定的窗口或控件开启/关闭输入响应
      hwnd     窗口/控件句柄
      bEnable  TRUE为开启,FALSE为关闭
      返回值:如果该窗口之前为关闭状态,返回TRUE;否则返回TRUE
      默认一个窗口在创建时都是Enable的,如果希望其是Disable的,那么就要在CreateWindow或
      CreateWindowEx函数中指定WS_DISABLED 风格;
      当窗口创建后,用此函数来切换开启/关闭。
      在对话框中关闭的控件不能接收用户的输入(变灰的那种)。
参见  CreateWindow,CreateWindowEx, IsWindowEnabled
-----------------------------------
名称  IsWindowEnabled
原型  BOOL IsWindowEnabled(HWND hWnd)
描述  判断指定窗口是否可以接受输入
      hwnd  窗口句柄
      返回值:如果窗口可以接受输入(Enable)返回TRUE;否则返回FALSE
参见  EnableWindow 
-----------------------------------
名称  AdjustWindowRectEx
原型  BOOL WINAPI AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu,DWORD dwExStyle)
描述  基于需要的客户区尺寸,计算需要的窗口区域尺寸
      根据(dwStyle)调整(lpRect)为客户的相对区域
      lpRect    指向客户区RECT结构的指针
      dwStyle   窗口属性              
      bMenu     窗口菜单,现在无作用
      dwExStyle 扩展窗口属性,现在无作用
      返回值:现在无作用
参见 
-----------------------------------
名称  GetClientRect
原型  BOOL WINAPI GetClientRect(HWND hwnd, LPRECT lpRect)
描述  获取窗口客户区的尺寸
      hwnd    窗口的句柄
      lpRect  指向客户区的RECT结构的指针
      RECT结构定义如下:
        typedef struct _RECT {
          LONG left;
          LONG top;
          LONG right;
          LONG bottom;
        } RECT;
      即一个矩形的上下左右 
      返回值:成功返回TRUE,失败返回FALSE
参见  GetWindowRect
-----------------------------------
名称  GetWindowRect
原型  BOOL WINAPI GetWindowRect(HWND hwnd, LPRECT lpRect)
描述  得到指定窗口的区域尺寸
      hWnd    窗口句柄
      lpRect  指向RECT结构的指针,用来得到窗口的相关屏幕位置
参见  GetClientRect
-----------------------------------
名称  ClientToScreen
原型  BOOL WINAPI ClientToScreen(HWND hwnd, LPPOINT lpPoint)
描述  将客户区内一点的位置对应到相关屏幕位置上
      hwnd    窗口句柄
      lpPoint 指向POINT结构的包含客户区相关内容的指针
      返回值:成功返回TRUE,失败返回FALSE
参见  ScreenToClient
-----------------------------------
名称  ScreenToClient
原型  BOOL WINAPI ScreenToClient(HWND hwnd, LPPOINT lpPoint)
描述  把lpPoint从窗口的区域转到窗口客户区
      hwnd    窗口句柄
      lpPoint 点指针
      返回值:成功返回TRUE,失败返回FALSE
参见  ClientToScreen
-----------------------------------
名称  MapWindowPoints
原型  int WINAPI MapWindowPoints(HWND hwndFrom, HWND hwndTo, LPPOINT lpPoints,UINT cPoints)
描述  把一组点从一个窗口转换到另一个窗口
      hwndFrom  : 源窗口句柄
      hwndTo    : 目的窗口句柄
      lpPoints  : 点起始指针
      cPoints   : 点的个数
      返回值:低 2字节是转换点数据时水平方向加的数值
             高 2字节是转换点数据时垂直方向加的数值
参见  ScreenToClient,ClientToScreen.
-----------------------------------
名称  GetMessage
原型  BOOL WINAPI GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
描述  得到消息队列中指定范围的消息
      lpMsg  指向欲得到消息的MSG消息结构
        MSG结构定义如下:
          typedef struct tagMSG {
           HWND   hwnd;      //指定接收消息的窗口句柄
           UINT   message;   //指定消息的标称序号
           WPARAM wParam;    //消息附带的第一参数
           LPARAM lParam;    //消息附带的第二参数
           DWORD  time;      //指定消息张贴的时间
           POINT  pt;        //当消息发生时,光标的位置
         } MSG;
      hwnd   窗口句柄,如为NULL表示这一进程包含的全部父窗体和子窗体
      wMsgFilterMin   消息过滤器低
      wMsgFilterMax   消息过滤器高 
                      实际上该函数只判断在这个过滤器范围之间的消息
                      当过滤器Min和Max都为0时表接收全部消息
      返回值:如果得到WM_QUIT消息,返回0
             如果得到其它消息,返回非0
             如出错返回-1                       
参见  PostMessage
-----------r-----------------------------------
名称  SendMessage
原型  LRESULT WINAPI SendMessage(HWND hwnd, UINT Msg,WPARAM wParam,LPARAM lParam)
描述  给指定的窗口发送一个消息
      这个消息是不进队的,就是说它立即调用指定窗口的消息处理过程来处理这个消息,直到处理完
      才返回。
      hwnd    指定窗口的句柄
      Msg     消息
      Wparam  消息参数1
      lParam  消息参数2
      返回值:依赖消息的不同,返回消息处理的结果
参见  PostMessage,GetMessage
-----------------------------------
名称  PostMessage
原型  BOOL WINAPI PostMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
描述  该函数将消息放到指定窗口的消息队列中
      这个消息队列是先进先出的,包括键盘消息等,可以被GetMessage得到
      hwnd    窗口句柄
      Msg     消息
      wParam  消息参数1
      lParam  消息参数2
      返回值:成功返回TRUE,失败返回FALSE
参见  GetMessage, PeekMessage
-----------------------------------
名称  PostQuitMessage
原型  VOID WINAPI PostQuitMessage(int nExitCode)
描述  该函数贴入消息队列中一个WM_QUIT消息并立即返回,指示系统该AP需要结束
      nExitCode   退出码,作为WM_QUIT的第二个参数
      当从消息队列中得到WM_QUIT消息时,该AP即退出WinMain中的消息循环,并将控制权交还系统
      返给系统的退出值就是消息的第二个参数,即nExitCode
参见  GetMessage, PeekMessage, PostMessage
-----------------------------------
名称  PostThreadMessage
原型  BOOL WINAPI PostThreadMessage(DWORD dwThreadId, UINT Msg, WPARAM wParam,LPARAM lParam)
描述  目前系统尚不支持线程,该函数功能目前等同于PostMessage
参见  PostMessage
-----------------------------------
名称  PeekMessage
原型  BOOL WINAPI PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin,UINT uMsgFilterMax, UINT wRemoveMsg)
描述  消息监听器,我们用它来查看系统在消息队列中是否有新的消息
      lpMsg   指向消息结构
      hwnd    要被监听消息的窗口句柄
      wMsgFilterMin   消息过滤器低位
      wMsgFilterMax   消息过滤器高位
                      这里的消息过滤器用来对消息过滤。
                      当wMsgFilterMin wMsgFilterMax 都为0,代表我们要监听所有消息
      wRemoveMsg      指定如何处理消息,它只能从下列值中选一:
        PM_NOREMOVE    在PeedMessage处理后,消息不从消息队列中删除
        PM_REMOVE      在PeedMessage处理后,消息从消息队列中删除
      这个函数可以使程序检查队列中的下一个消息,就像“偷看”一样,但并不实际删除它。
      这个监听不像GetMessage那样不将控制返回给程序,而是不论消息是否出现,立即返回。
      当我们想在程序中一直做些事情,比如,画些随机的图案,这不是简单地在WM_PAINT中使用
      While(TRUE)循环来实现的,因为这样就无法处理其它消息了,我们就必须用到这个监听函数:
     
       while(TRUE)
       {
           if(PeekMessage($msg,NULL,0,0,PM_REMOVE))
           {
             if(msg.message==WM_QUIT) break;
            
             TranslateMessage(&msg);
             DispatchMessage(&msg);
           }
           else{
             [在这里写我们的随机绘图函数了]
           }
       }
      要注意的是,WM_QUIT消息必须检查,因为如果GetMessage接到WM_QUIT消息将返回0,但PeekMessage
      用它的返回值指示是否得到消息,所以WM_QUIT必须检查。
参见  GetMessage
-----------------------------------
名称  DispatchMessage
原型  LONG WINAPI DispatchMessage(CONST MSG *lpMsg)
描述  这个函数分发消息到窗口过程,它典型的是和GetMessage配套使用
      lpMsg   指向消息结构
      返回值:实际上这里一般是忽略其返回值的
参见  GetMessage
-----------------------------------
名称  GetCapture
原型  HWND WINAPI GetCapture(VOID)
描述  得到当前能接受笔触的窗口
      同一时间只能有一个窗口能接受笔触
      返回值:成功返回该窗口句柄,如没有窗口能接受笔触返回NULL
参见  SetCapture ,ReleaseCapture
-----------------------------------
名称  SetCapture
原型  HWND WINAPI SetCapture(HWND hwnd)
描述  将指定窗口设为可以接受笔触
      同一时间只能有一个窗口能接受笔触
      hwnd   欲设接受笔触的窗口句柄
      返回值:成功返回上次接受笔触的窗口句柄;如没有这样的窗口返回NULL
参见  GetCapture
-----------------------------------
名称  ReleaseCapture
原型  BOOL WINAPI ReleaseCapture(VOID)
描述  使当前接受笔触的窗口不再接受笔触
      通常在SetCapture之后如有需要才调用此函数进行释放
      返回值:成功返回非0值,失败返回0
参见  GetCapture, SetCapture,
-----------------------------------
名称  SetTimer
原型  UINT WINAPI SetTimer(HWND hwnd, UINT idTimer, UINT uTimeout,TIMERPROC lpTimerFunc);
描述  用此函数为MicroWindow程序分配一个计时器
      我们通过此函数设定系统间隔多长时间给你的程序正常窗口发送WM_TIMER消息。
      当使用完计时器后,要调用KillTimer函数停止计时器消息。
      在当前版本的MicroWindow中,计时器具有   的分辨率
      要注意的是,计时器消息也是在消息队列中,并不一定在设置的计时器时间到后就会立即收到WM_TIMER
      消息,程序只有在消息队列中没有其它消息时才能接收到。
      要注意的是,不能直接用计时器来精确计时。
      hwnd        接收WM_TIMER消息的窗口句柄
      idTimer     计时器ID,应该是个非0整数
                  如果使用多个计时器,那么对每个计时器要使用不同的ID
                  当窗口过程收到WM_TIMER消息时,wParam参数等于计时器的ID,lParam参数为0
      uTimerout   以毫秒为单位指定时间间隔,时间到后发送一次WM_TIMER消息
      lpTimerFunc 计时器处理过程
                  当我们不指定此过程(该参数填为NULL)SetTimer会给窗口过程发送WM_TIMER消息;
                  如果我们指定一个过程处理计时器的动作,那么SetTimer不会再显式的发送WM_TIMER
                  消息,而是由此过程来处理。例如:
                  switch(message){
                   case WM_CREATE:
                     SetTimer(hwnd,ID_TIMER,1000,TimerProc);
                     return 0;
                     //...
                  }
                  VOID CALLBACK TimerProc(HWND hwnd,UINT message,UINT iTImerID,DWORD dwTIme)
                  {
                     //... ...  do what you want
                  }
      返回值:成功返回标识新计时器的整数;失败返回0
参见  KillTimer
-----------------------------------
名称  KillTimer
原型  BOOL WINAPI KillTimer(HWND hwnd, UINT idTimer);
描述  销毁指定的计时器
      hwnd     关联指定计时器的窗口句柄
      idTimer  计时器ID
      返回值:成功返回TRUE,失败返回FALSE
参见  SetTimer
-----------------------------------
名称  MwGetNextTimeoutValue
原型  UINT MwGetNextTimeoutValue(void)
描述  得到计时器下一个到时的值,单位为毫秒
      返回值:返回此值,出错返回0     
参见  SetTimer
-----------------------------------
名称  MwHandleTimers
原型  void MwHandleTimers(void)
描述  检查并且执行已经到时的定时器
参见  SetTimer
-----------------------------------
名称  GetSystemMetrics
原型  int WINAPI GetSystemMetrics(int nIndex)
描述  得到系统变量和系统设定,所有单位以像素为准
      nIndex    希望得到的系统设定索引
        当前版本的MicroWindow支持如下值:
          SM_CXSCREEN       屏幕宽度
          SM_CYSCREEN       屏幕高度
          SM_CXVSCROLL      垂直滚动条块宽度
          SM_CYHSCROLL      水平滚动条块高度
          SM_CYVSCROLL      垂直滚动条块高度     
          SM_CXHSCROLL      水平滚动条块宽度
          SM_CYCAPTION      标题区域高度
          SM_CXBORDER       窗口滚动条边框宽度
          SM_CYBORDER       窗口滚动条边框高度
          SM_CXDLGFRAME     对话框横边宽度
          SM_CYDLGFRAME     对话框纵边宽度
          SM_CXICON         图标缺省的宽度
          SM_CYICON         图标缺省的高度
          SM_CYMENU         菜单区高度
          SM_CXFRAME        水平边框宽度
          SM_CYFRAME        垂直边框高度
      返回值:得到相应索引对应的系统值   
参见 
-----------------------------------
名称  CreateCaret
原型  BOOL CreateCaret(HWND hWnd, int nWidth, int nHeight)
描述  产生一个新的系统光标,并将其分配给指定的窗口
      只有一个窗口得到键盘输入焦点或激活时才能给其创建光标
      在失去键盘输入焦点前应销毁光标
      hWnd    属主窗口句柄
      nWidth  光标宽度
      nHeight 光标高度
      返回值:成功创建返回TRUE;失败返回FALSE
参见  ShowCaret ,HideCaret,DestroyCaret
-----------------------------------
名称  ShowCaret
原型  BOOL ShowCaret(HWND hWnd)
描述  使光标出现在屏幕的在光标位置上
      当光标出现后即会自动闪烁
      只有窗口自己拥有光标,且光标有自己的形状,并且不被隐藏时才会出现
      HideCaret是效果叠加的,举例说,如果你在程序中调过3次HideCaret,那就必需再用ShowCaret
      才能显示光标
      hWnd   光标属主窗口句柄
      返回值:成功返回TRUE;失败返回FALSE
参见  HideCaret,CreateCaret
-----------------------------------
名称  HideCaret
原型  BOOL HideCaret(HWND hWnd)
描述  隐藏光标。光标隐藏后并没有破坏它的形状和光标位置
      hWnd      光标属主窗口句柄
      返回值:成功返回TRUE;失败返回FALSE
参见  ShowCaret,CreateCaret
-----------------------------------
名称  ActiveCaret
原型  BOOL ActiveCaret(HWND hWnd)
描述  指定光标要显示在哪个窗口
      hWnd    属主窗口句柄
      返回值:成功返回TRUE;失败返回FALSE
参见  CreateCaret
-----------------------------------
名称  GetCaretBlinkTime
原型  UINT GetCaretBlinkTime(HWND hWnd)
描述  得到以毫秒为单位的光标闪烁间隔
      hWnd     光标属主窗口句柄
      返回值:成功返回闪烁间隔;失败返回0
参见  SetCaretBlinkTime
-----------------------------------
名称  SetCaretBlinkTime
原型  BOOL SetCaretBlinkTime(HWND hWnd, UINT uTime)
描述  以毫秒为单位设置光标闪烁间隔
      hWnd     光标属主窗口句柄
      uTime    毫秒值,现在只支持500毫秒(即每秒闪动一次)
      返回值:成功返回TRUE;失败返回FALSE
参见  SetCaretBlinkTime
-----------------------------------
名称  DestroyCaret
原型  BOOL DestroyCaret(HWND hWnd)
描述  销毁指定窗口的光标
      只有窗口拥有光标时才能销毁,否则该函数会立即返回FALSE
      hWnd     光标属主窗口句柄
      返回值:成功返回TRUE;失败返回FALSE     
参见  CreatCaret
-----------------------------------
名称  SetCaretPos
原型  BOOL SetCaretPos(HWND hWnd, int x, int y)
描述  移动光标到指定位置
      不管光标是否可见,此函数都会移动光标的位置
      hWnd     光标属主窗口句柄
      x        光标位置横标
      y        光标位置纵标
参见  GetCaretPos
-----------------------------------
名称  GetCaretPos
原型  BOOL GetCaretPos(HWND hWnd, PPOINT pPt)
描述  得到光标位置
      hWnd     光标属主窗口句柄
      pPt      指向POINT结构的光标位置
      返回值:成功返回TRUE;失败返回FALSE     
参见  SetCaretPos
-----------------------------------

     **********************************
     *     GDI函数                    *
     **********************************

-----------------------------------
名称  GetDC
原型  HDC WINAPI GetDC(HWND hwnd)
描述  该函数返回指向当前窗口客户区的显示设备描述表句柄
      我们可以用这个返回的句柄来使用GDI(图形设备接口:Graphics Device Interface)函数
      在显示设备上画图,并不改变设备的显示区域数据
      hwnd  窗口句柄,如为NULL表当前屏幕
      需要说明的是,当我们想在一个图形输出设备上绘图时,必须先获得一个设备描述表(DC)的句柄。
      将句柄返回给程序时,系统就给与了对这个设备的权限,然后我们才能在GDI函数中将这个句柄作为
      参数,来标识想在其上进行绘图的设备。
      使用GetDC使我们在非WM_PAINT消息期间也能得到设备描述表句柄,但在退出窗口函数之前必须要
      调用ReleaseDC来将其释放。而BeginPaint和EndPaint函数在进行绘图的WM_PAINT消息期间使用。
      这个函数等同于 GetDCEx(hwnd, NULL, DCX_DEFAULTCLIP|DCX_EXCLUDEUPDATE);
      返回值:如果成功返回指定窗口客户区的设备描述表句柄
      失败返回NULL
参见  GetDCEx,ReleaseDC,BeginPaint,EndPaint,GetWindowDC
-----------------------------------
名称  GetDCEx
原型  HDC WINAPI GetDCEx(HWND hwnd,HRGN hrgnClip,DWORD flags)
描述  这是GetDC函数的超集,除了GetDC的功能外,向应用程序额外提供了在客户区域的剪切控制
      hwnd      窗口句柄
      hrgnClip  指定可能和设备描述表可视区域接合的剪切区域
      flags     指定设备描述表如何被创建。现版本的MicroWindow只支持:
          DCX_WINDOW
          DCX_DEFAULTCLIP
      返回值:如果成功返回指定窗口客户区的设备描述表句柄
             失败返回NULL
参见  GetDC
-----------------------------------
名称  GetWindowDC
原型  HDC WINAPI GetWindowDC(HWND hWnd)
描述  这个函数可以获取整个窗口而不仅限于窗口客户区的设备描述句柄,同样的,也必须要在使用完毕
      后用ReleaseDC释放。
      这个设备描述表除了客户区外,还包括窗口的标题栏、菜单、滚动条和框架。
      正常情况下,在非客户区绘图是不推荐的。如果想尝试使用GetWindowDC,必须捕获WM_NCPAINT
      (非客户区绘制)消息。
      返回值:如果成功返回指定窗口客户区的设备描述表句柄
             失败返回NULL
参见  GetDC
-----------------------------------
名称  ReleaseDC
原型  int WINAPI ReleaseDC(HWND hWnd, HDC hDC)
描述  释放设备描述表句柄,以便其它应用可以使用。
      要注意的是,所有应用GetDC或GetDCEx、GetWindowDC来获得设备描述表句柄后,都必须用
      ReleaseDC来释放;但是用CreateDC函数生成的DC不可以使用ReleaseDC来释放,它必须用
      DeleteDC来删除
      hwnd  窗口句柄
      hDC   要释放的设备描述表句柄
      返回值:如果成功释放返回1;否则返回0
参见  GetDC,CreateDC,DeleteDC
-----------------------------------
名称  DeleteDC
原型  BOOL WINAPI DeleteDC(HDC hdc)
描述  删除一个创建的设备描述表句柄
      只有调用CreateDC创建的设备描述表才能用此函数删除。
      hdc  要释放的设备描述表句柄
      返回值:成功删除返回TRUE;失败返回FALSE
参见  CreateDC
-----------------------------------
名称  CreateDC
原型  HDC CreateDC(LPCTSTR lpszDriver,LPCTSTR lpszDevice,LPCTSTR lpszOutput,CONST DEVMODE *lpInitData)
描述  用指定的名称创建一个设备描述表
      实际上,lpszDriver 只有在一种情况下才有意义,那就是当其为“DISAPLY”时,这时后面其它
      参数必须都填为NULL,例如:
       hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
      返回值:如果成功返回创建的设备描述表句柄
             失败返回NULL
参见  GetDC,DeleteDC
-----------------------------------
名称  GetDeviceCaps
原型  int WINAPI GetDeviceCaps(HDC hdc, int nIndex)
描述  设备描述表通常是指一个物理设备,可以通过此函数得到它的属性信息
      hdc    指定的设备描述表句柄
      nIndex 指定要得到的属性信息索引,它可以是:
          HORZRES      返回屏幕水平显示像素数
          VERTRES      返回屏幕垂直显示像素数
          BITSPIXEL    显示一个像素需要的bits数
          PLANES       planes 的数目
          SIZEPALETTE  颜色数
     返回值:指定的属性信息
参见 
-----------------------------------
名称  BeginPaint
原型  HDC WINAPI BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint)
描述  得到窗口图形设备和画图区域,准备绘制填充指定窗口
      hwnd     窗口句柄
      lpPaint  指向准备接收绘图信息的PAINTSTRUCT 结构指针
        PAINTSTRUCT 结构定义如下:
          typedef struct tagPAINTSTRUCT {
            HDC  hdc;                 //准备绘图的设备描述表句柄
            BOOL fErase;              //指定背景是否擦除
            RECT rcPaint;             //指定一个RECT结构的绘图区域
            BOOL fRestore;            //保留
            BOOL fIncUpdate;          //保留
            BYTE rgbReserved[32];     //保留
         } PAINTSTRUCT;
      BeginPaint会发WM_ERASEBKGND 消息给窗口擦写画图区域成背景色  
      应用程序应当在WM_PAINT处调用BeginPaint,画图结束后须调用EndPaint释放设备描述表
      返回值:成功返回图形设备的句柄, 失败返回NULL
参见  EndPaint,GetDC
-----------------------------------
名称  EndPaint
原型  BOOL WINAPI EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint)
描述  画图结束后释放由BeginPaint获得的图形设备描述表
      该函数必须配合BeginPaint函数使用
      hWnd     窗口句柄
      lpPaint  画图区域指针,调用BeginPaint所得到的指针
参见  BeginPaint
-----------------------------------
名称  SetTextColor
原型  COLORREF WINAPI SetTextColor(HDC, COLORREF)
描述  设置显示字符颜色
      hdc      图形设备描述表句柄
      crColor  颜色值,如果系统无此颜色值将选用最接近的颜色
              
      返回值:图形设备的旧颜色值,如失败返回CLR_INVALID
参见  TextOut ,GetTextColor,ExtTextOut
-----------------------------------
名称  GetTextColor
原型  COLORREF WINAPI GetTextColor(HDC)
描述  得到指定的显示设备的字符输出颜色
      hdc      图形设备描述表句柄
      返回值:成功返回颜色值,如失败返回CLR_INVALID
参见  TextOut ,SetTextColor,ExtTextOut
-----------------------------------
名称  SetBkColor
原型  COLORREF WINAPI SetBkColor(HDC, COLORREF)
描述  设置显示背景色,包括为TextOut和ExtTextOut设置背景色
      hdc     图形设备的句柄
      crColor 颜色值,如果系统无此颜色值将选用最接近的颜色
      返回值:图形设备的旧颜色值,如失败返回CLR_INVALID
参见  GetBKColor
-----------------------------------
名称  GetBkColor
原型  COLORREF WINAPI GetBkColor(HDC)
描述  得到当前指定的图形设备的背景色
      hdc     图形设备的句柄
      返回值:图形设备的旧颜色值,如失败返回CLR_INVALID
参见  SetBKColor
-----------------------------------
名称  GetSysColor
原型  DWORD WINAPI GetSysColor(int nIndex)
描述  从指定的显示元素中得到当前的颜色
      nIndex  颜色的索引值,它必须是下面列表中的一种:
     
      返回值:颜色值,如失败返回0
参见  SetSysColor
-----------------------------------
名称  SetSysColor
原型  COLORREF WINAPI SetSysColor(int nIndex, COLORREF crColor)
描述  设置系统颜色值为指定的显示元素
      nIndex  颜色的索引值,它必须是下面列表中的一种:
     
      crColor 颜色值
      返回值:成功返回旧颜色值,失败返回0
参见  GetSysColor
-----------------------------------
名称  SetBkMode
原型  int WINAPI SetBkMode(HDC hdc, int iBKMode)
描述  设定指定图形设备的背景混合模式
      hdc     图形设备描述表句柄
      iBKMode 指定背景模式,目前只支持
        OPAQUE  画图前用图形设备的背景色擦写画图区域。这是缺省模式。
      返回值:返回值:成功返回旧模式,失败返回0
参见  GetBkMode
-----------------------------------
名称  GetBkMode
原型  int GetBkMode(HDC hdc);
描述  得到指定显示设备的背景混合模式
参见  SetBkMode
-----------------------------------
名称  DrawText
原型  int WINAPI DrawText(HDC hdc, LPCSTR lpString, int nCount, LPRECT lpRect,UINT uFormat)
描述  在指定区域显示文字
      hdc        图形设备描述表句柄
      lpString   字符串指针
      nCount     要显示字符数。如其为-1,那么lpString参数一定是一个以NULL结尾的字符串,此时
                 DrawText会自动计算字符数目
      lpRect     指向一个包含文字显示区域的RETC结构
      uFormat    指定文字的显示方式,它可以是下面列表的组合:
          DT_CALCRECT    只计算显示区域的宽高,存入lpRect,立即返回字符高度,不显示字符
          DT_CENTER      显示字符在显示区域的正中
          DT_RIGHT       显示字符在显示区域的最右边
          DT_LEFT        显示字符在显示区域的最左边,这是系统缺省方式
      返回值:成功返回字符高度,失败返回0
参见  TextOut
-----------------------------------
名称  TextOut
原型  BOOL WINAPI TextOut(HDC hdc, int x, int y, LPCSTR lpszString, int cbString)
描述  使用当前选定的字体、背景和字体颜色,在指定位置显示字符串
      hdc        图形设备描述表句柄
      x          左上角的起始横标
      y          左上角的起始纵标
      lpszString 指向要显示的字符串,这个字符串不必须是以NULL结尾的,因为cbString会指定长度
      cbString   字串长度
      返回值:成功返回非零值;失败返回0
参见  SelectObject, SetBkColor, SetTextColor
-----------------------------------
名称  ExtTextOut
原型  BOOL WINAPI ExtTextOut(HDC hdc, int x, int y, UINT fuOptions, CONST RECT *lprc, LPCSTR lpszString,
 UINT cbCount, CONST INT *lpDx)
描述 
参见 
-----------------------------------
名称  ExtTextOutW
原型  BOOL WINAPI ExtTextOutW(HDC hdc, int x, int y, UINT fuOptions, CONST RECT *lprc, LPCWSTR lpszString,
 UINT cbCount, CONST INT *lpDx)
描述  在这里实际与ExtTextOut等效
参见  ExtTextOutW
-----------------------------------
名称  DrawTextW
原型  int WINAPI DrawTextW(HDC hdc, LPCWSTR lpString, int nCount, LPRECT lpRect,UINT uFormat)
描述  在这里实际与DrawText等效
参见  DrawText
-----------------------------------
名称  SetTextAlign
原型  UINT WINAPI SetTextAlign(HDC hdc, UINT fMode)
描述  设定在指定设备描述表中的文字排列方式
      同样的文字可以有不同的排列方式,比如可以是横排,从左向右,也可以从右向左;古书还多有从
      右上到左下的。
      hdc      设备描述表句柄
      fMode    排列方式,它可以是下面列表中不冲突的组合:
       TA_BASELINE  从左上向右下排
     
      返回值:成功返回前次的排列方式;失败返回GDI_ERROR
参见  ExtTextOut, TextOut
-----------------------------------
名称  SetROP2
原型  int WINAPI SetROP2(HDC hdc, int fnDrawMode)
描述  设定当前绘图的前景色混合模式
      它定义了画笔或刷子上的颜色如何与已存在的图像向叠加
      hdc          设备描述表句柄
      fnDrawMode   指定混合模式,它只能从下面的列表中选一种
            R2_XORPEN   异或模式,即叠加效果
            R2_COPYPEN  写模式,即覆盖效果,这是系统缺省值
      返回值:成功返回上次的模式;失败返回0     
参见 
-----------------------------------
名称  GetPixel
原型  COLORREF WINAPI GetPixel(HDC hdc, int x, int y)
描述  在指定显示设备上取得点的颜色
      hdc     设备描述表句柄
      x       点位置像素横标
      y       点位置像素纵标
      不是所有的设备都支持GetPixel,一个应用程序保险起见应该调用GetDeviceCaps 来确定是否支持。
      返回值:返回该像素点的颜色;如这个点在当前客户区之外,返回CLR_INVALID
参见  SetPixel,GetDeviceCaps
-----------------------------------
名称  SetPixel
原型  COLORREF WINAPI SetPixel(HDC hdc, int x, int y, COLORREF crColor)
描述  将指定位置的像素点置成指定颜色
      hdc     设备描述表句柄
      x       点位置像素横标
      y       点位置像素纵标
      crColor 颜色值
      返回值:成功返回颜色值;失败返回-1
参见  GetPixel
-----------------------------------
名称  MoveToEx
原型  BOOL WINAPI (HDC hdc, int x, int y, LPPOINT lpPoint) 
描述  该函数不会画线,它只是设定了“当前位置”属性
      画一条直线必须要使用两个函数,这个函数指定线的开始点,第二个函数 LineTo指定终点
      在默认的设备描述表中,当前位置最初设在(0,0)
      hdc     设备描述表句柄     
      x       起点横标
      y       起点纵标
      lpPoint 指向POINT结构的指针,从该函数返回后,POINT结构中的x、y保存了先前的当前位置。
              如果这个参数对您没有用(大部分情况如此),那就将其填为NULL
      返回值:成功返回非0;失败返回0
参见  LineTo
-----------------------------------
名称  LineTo
原型  BOOL WINAPI LineTo(HDC hdc, int x, int y)
描述  这个函数从“当前位置”到指定位置之间画一条直线
      如上所述,LineTo必须和MoveToEx结合使用
      hdc     设备描述表句柄     
      x       终点横标
      y       终点纵标     
      返回值:成功返回非0;失败返回0
参见  MoveToEx
-----------------------------------
名称  Polyline
原型  BOOL WINAPI Polyline(HDC hdc, CONST POINT *lppt, int cPoints)
描述  画一组相连的直线
      hdc     设备描述表句柄     
      lppt    指向一个POINT结构数组,每个结构都定义了一个像素点
      coints  指定像素点的数目,这个数目必须>=2
      应用这个函数顺序连接这些点而画出一系列直线
      返回值:成功返回非0值;失败返回0
参见  LineTo,MoveToEx
-----------------------------------
名称  Polygon
原型  BOOL WINAPI Polygon(HDC hdc, CONST POINT *lpPoints, int nCount)
描述  画由多条直线边组成的多边形,并以当前的色刷填充
      hdc       设备描述表句柄     
      lpPoints  指向一个POINT结构数组,里面存放多边形的各个顶点坐标
      nCount    指定多边形顶点数目,必须>=2
      返回值:成功返回非0值;失败返回0
参见  Polyline
-----------------------------------
名称  PolyPolygon
原型  BOOL WINAPI PolyPolygon(HDC hdc, CONST POINT *lpPoints, LPINT lpPolyCounts,int nCount)
描述  画一系列封闭多边形
      hdc       设备描述表句柄     
      lpPoints  指向一个POINT结构数组,里面存放多个多边形的各个顶点坐标
      lpPolyCounts  指向每个多边形顶点坐标数目的数组,这个数目必须>=2
      nCount    指定多边形顶点数目,必须>=2
      返回值:成功返回非0值;失败返回0
参见  Polygon, Polyline
-----------------------------------
名称  Ellipse
原型  BOOL WINAPI Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,int nBottomRect);
描述  画椭圆
      hdc         设备描述表句柄     
      nLeftRect   左上角横标
      nLeftRect   左上角纵标
      nRightRect  右下角横标
      nBottomRect 右下角纵标
      返回值:成功返回非0值;失败返回0
参见  Arc
-----------------------------------
名称  Arc
原型  BOOL WINAPI Arc(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,int nBottomRect,
 int nXStartArc, int nYStartArc,int nXEndArc, int nYEndArc)
描述  画一弧线
      hdc          设备描述表句柄     
      nLeftRect    左上角横标
      nTopRect     左上角纵标
      nRightRect   右下角横标
      nBottomRect  右下角纵标
      nXStartArc   弧线水平起始
      nYStartArc   弧线垂直起始
      nXEndArc     弧线水平终点
      nYEndArc     弧线垂直终点
      返回值:成功返回非0值;失败返回0
参见  Ellipse
-----------------------------------
名称  Pie
原型  BOOL WINAPI Pie(HDC hdc, int nLeftRect, int nTopRect,
int nRightRect,int nBottomRect, int nXRadial1, int nYRadial1,int nXRadial2, int nYRadial2)
描述  画一圆形
      hdc          设备描述表句柄
      nLeftRect    左上角横标
      nTopRect     左上角纵标
      nRightRect   右下角横标
      nBottomRect  右下角纵标
      nXRadial1    左水平半径
      nYRadial1    左垂直半径
      nXRadial2    右水平半径
      nYRadial2    右垂直半径
      返回值:成功返回非0值;失败返回0      
参见  Arc
-----------------------------------
名称  Rectangle
原型  BOOL WINAPI Rectangle(HDC hdc, int nLeft, int nTop, int nRight, int nBottom)
描述  画一矩形
      hdc         图形设备的句柄
      nLeft       左上角水平座标
      nTop        左上角垂直座标
      nRight      右下角水平座标
      nBottom     右下角垂直座标
      返回值:成功返回TRUE,失败返回FALSE
参见 
-----------------------------------
名称  FillRect
原型  int WINAPI FillRect(HDC hDC, CONST RECT *lprc, HBRUSH hbr)
描述  用指定的刷子填充矩形
      hdc         图形设备的句柄
      lprc        指向要被填充矩形的RECT结构指针
      hbr         填充矩形的刷子句柄
      刷子也可以用GetStockObject函数得到。
      返回值:成功返回非0值;失败返回0      
参见  GetStockObject,
-----------------------------------
名称  SetRect
原型  BOOL WINAPI SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom)
描述  设置一个矩形的新形状
      lprc     指向被设置矩形的RECT结构指针
      xLeft    新左上角横标 
      yTop     新左上角纵标 
      xRight   新右下角横标 
      yBottom  新右下角纵标 
      返回值:成功返回非0值;失败返回0      
参见  SetRectEmpty
-----------------------------------
名称  SetRectEmpty
原型  BOOL WINAPI SetRectEmpty(LPRECT lprc)
描述  创建一个空的矩形
      lprc   指向这个空矩形的RECT指针
      返回值:成功返回非0值;失败返回0      
参见  SetRect,CopyRect
-----------------------------------
名称  CopyRect
原型  BOOL WINAPI CopyRect(LPRECT lprcDst, CONST RECT *lprcSrc)
描述  拷贝一个矩形为另一个
      lprcSst   指向源矩形的RECT结构指针
      lprcDrc   指向目的矩形的RECT结构指针
      返回值:成功返回非0值;失败返回0      
参见  SetRect, SetRectEmpty
-----------------------------------
名称  XorRect
原型  void XorRect (HDC hdc, RECT *rect)
描述  将矩形异或,即反色显示
      hdc   图形设备的句柄
      rect  指向矩形的RECT结构指针
      该函数无返回值
参见       
-----------------------------------
名称  IsRectEmpty
原型  BOOL WINAPI IsRectEmpty(CONST RECT *lprc)
描述  检测是否为空矩形(无效矩形)
      lprc   指向矩形的RECT结构指针
      返回值:TRUE无效矩形;FALSE有效矩形
参见 
-----------------------------------
名称  InflateRect
原型  BOOL WINAPI InflateRect(LPRECT lprc, int dx, int dy)
描述  增加或缩小指定矩形的高和宽
      lprc   指向矩形的RECT结构指针
      dx     增加或减少的宽度值
      dy     增加或减少的高度值
      dx、dy是有符号的,正数表增加,复数则为减小
      返回值:成功返回非0值;失败返回0      
参见  OffsetRect
-----------------------------------
名称  IntersectRect
原型  BOOL WINAPI IntersectRect(LPRECT dest, const RECT *src1, const RECT *src2 )
描述  用矩形2去横截矩形1
      dest   指向横截面矩形
      src1   指向矩形1
      src2   指向矩形2
      返回值:如果能够横断返回非0值,否则返回0
参见  InflateRect,OffsetRect
-----------------------------------
名称  OffsetRect
原型  BOOL WINAPI OffsetRect(LPRECT lprc, int dx, int dy)
描述  水平或垂直移动矩形
      lprc   指向矩形的RECT结构指针
      dx     水平移动值,正数表示右移;负数表左移
      dy     垂直移动值,正数表示下移;负数表上移
      返回值:成功返回非0值;失败返回0
参见  InflateRect
-----------------------------------
名称  InvalidateRect
原型  BOOL WINAPI InvalidateRect(HWND hwnd, CONST RECT *lpRect, BOOL bErase)
描述  给指定的窗口更新区域增加矩形显示区
      这也使客户区域必须重绘
      hwnd    窗口句柄
              如为NULL为重绘整个窗口
      lpRect  指向要增加的矩形的RECT结构指针
              如其值为NULL,整个客户区被加入到更新区域中
      bErase  背景擦除标识,目前版本只能填TRUE
      返回值:返回值:成功返回非0值;失败返回0
参见  ValidateRect
-----------------------------------
名称  ValidateRect
原型  BOOL WINAPI ValidateRect(HWND hwnd, CONST RECT *lprc)
描述  给指定的窗口更新区域减小矩形显示区
      hwnd    窗口句柄
              如为NULL为重绘整个窗口
      lpRect  指向要减小的矩形的RECT结构指针
              如为NULL,整个客户区被减去
      返回值:返回值:成功返回非0值;失败返回0        
参见  InvalidateRect
-----------------------------------
名称  GetUpdateRect
原型  BOOL WINAPI GetUpdateRect(HWND hwnd, LPRECT lpRect, BOOL bErase)
描述  得到指定窗口的确切显示区域
      hwnd    窗口句柄
      lpRect  指向得到的显示区域矩形的RECT结构指针
      bErase  背景擦除标识,目前版本只能填TRUE
      返回值:返回值:成功返回非0值;失败返回0        
参见  ValidateRect ,InValidateRect
-----------------------------------
名称  UnionRect
原型  BOOL WINAPI UnionRect(LPRECT dest, const RECT *src1, const RECT *src2 )
描述  建立两个矩形的联合,即得到包含这两个矩形的最小矩形
      dest    指向合并后的矩形
      src1    欲合并的矩形1
      src2    欲合并的矩形2
      返回值:返回值:成功返回非0值;失败返回0        
参见  InflateRect,OffsetRect
-----------------------------------
名称  EqualRect
原型  BOOL WINAPI EqualRect(const RECT* rect1, const RECT* rect2 )
描述  通过比较指定的两个矩形的左上角和右下角来判断两个矩形是否相同
      rect1   指向待比较矩形1
      rect2   指向待比较矩形2
      返回值:相等返回TRUE,不等返回FALSE
参见 
-----------------------------------
名称  SubtractRect
原型  BOOL WINAPI SubtractRect(LPRECT dest, const RECT *src1, const RECT *src2 )
描述  得到从矩形src1中减去矩形src2后的矩形
      dest   指向相减后得到的矩形
      src1   待减矩形
      src2   待减去的矩形
      减去的矩形必须在源矩形中占据完整的断面,例如,如果
      src1为(10,10,100,100) src2为(50,50,150,150)
      减去后结果还为(10,10,100,100);但如
      src1为(10,10,100,100) src2为(50,10,150,150)
      减去后结果则为(10,10,50,100)
参见  UnionRect
-----------------------------------
名称  GetStockObject
原型  HGDIOBJ WINAPI GetStockObject(int nObject)
描述  得到系统设备描述表中默认存储的图形对象,比如画笔、刷子、字体等
      nObject    图形对象类型 
        在当前MicroWindow版本中支持如下图形对象:
         WHITE_BRUSH
         LTGRAY_BRUSH
         GRAY_BRUSH
         DKGRAY_BRUSH
         BLACK_BRUSH
         NULL_BRUSH
         HOLLOW_BRUSH
         WHITE_PEN
         BLACK_PEN
         NULL_PEN
         OEM_FIXED_FONT
         ANSI_FIXED_FONT
         ANSI_VAR_FONT
         SYSTEM_FONT
         DEVICE_DEFAULT_FONT
         DEFAULT_PALETTE
         SYSTEM_FIXED_FONT
         DEFAULT_GUI_FONT
         DC_BRUSH
         DC_PEN
         STOCK_LAST
       
参见  SelectObject,DeleteObject
-----------------------------------
名称  SelectObject
原型  HGDIOBJ WINAPI SelectObject(HDC hdc, HGDIOBJ hObject)
描述  为指定的设备描述表选定一个图形对象,新对象将替代先前相同类型的对象
      图形设备描述表是一个定义了一套图形对象及其相关属性的结构,在我们需要用图形设备绘图时必需
      用此函数设定相关的图形对象。
      图形对象有6种,包括位图、画笔、刷子、字体、区域和调色板。除了调色板之外,这些对象都是
      通过SelectObject选进设备描述表的。
      在释放设备描述表后,就可以用DeleteObject来删除选进的对象了。
      在使用图形对象时,应遵守以下规则:
       ×最后要删除自己创建的所有图形对象
       ×当图形对象正在一个有效的设备描述表中时,不要删除它
       ×不要删除现有对象
      hdc      设备描述表句柄
      hObject  对象句柄  下表中支持的对象必须用下列相应的函数来创建:
        Bitmap  位图       CreateCompatibleBitmap
        Brush   刷子       CreateSolidBrush
        Font    字体       GetSystemFontObject
        Pen     画笔       CreatPen
        Region  区域       CreateRectRgn                  
参见  DeleteObject,CreateCompatibleBitmap,CreateSolidBrush ,GetSystemFontObject
      CreatPen,CreateRectRgn
-----------------------------------
名称  DeleteObject
原型  BOOL WINAPI DeleteObject(HGDIOBJ hObject);
描述  删除一个图形对象并释放与其相关的系统资源
      hObject   图形对象句柄
      返回值:成功返回TRUE,失败返回FALSE
参见  SelectObject
-----------------------------------
名称  CreateSolidBrush
原型  HBRUSH WINAPI CreateSolidBrush(COLORREF crColor)
描述  创建一个逻辑画刷,将其选进设备描述表后用来填充图形内部区域。
      得到刷子句柄后就可以用SelectObject将其选进设备描述表,使用后用DeleteObject将其删除。
      crColor   刷子颜色值
      返回值:成功返回画刷句柄;失败返回NULL
参见  SelectObject,DeleteObject
-----------------------------------
名称  CreatePen
原型  HPEN WINAPI CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
描述  产生一个指定类型、宽度、颜色的逻辑画笔
      画笔决定了画出线的色彩、宽度和线型,默认设备描述表中画笔为BLACK_PEN,即黑色单实线画笔。
      如果不用系统设备描述表中当前选定的画笔,就需要创建自己的画笔。
      nPenStyle    画笔类型,目前版本MicroWindow只支持两种:
          PS_SOLID  实线
          PS_NULL   不显示线条
      nWidth       指定线条像素宽度
      crColor      线条颜色,系统将其转换为设备所能表示的最相近颜色
      返回值:成功返回上次的画笔句柄;如上次无画笔句柄返回NULL
参见  SelectObject,DeleteObject
-----------------------------------
名称  GetSystemFontObject
原型  HFONT GetSystemFontObject (void)
描述  取得系统指定的汉字库字体
      如果不调用此函数的话,是不能显示汉字的,只能显示6*13的ASCII字符
      现在系统内只有12*12的汉字库(简、繁体),并且是随着语言设置自适应的
      我们并不推荐您使用CreateFont()来手工创建字体,因为这可能使系统混乱
      如果您希望使用TextOut()、TextOut()来显示文本,那么要如下书写程序:
      SelectObject (hdc, GetSystemFontObject ());
      来给设备描述表(DC)分配字体对象,并且不需要调用DeleteObject()释放。
      返回值:字体句柄
参见  SelectObject,DeleteObject
-----------------------------------
名称  CreateCompatibleBitmap
原型  HBITMAP WINAPI CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight)
描述  给指定的设备描述表创建适宜大小的位图
      此函数创建的位图颜色格式继承于hdc参数指定的设备,这个位图可以被选定到内存设备描述表中。
      一般我们使用此函数用来将一幅位图创建到内存中,然后使用BitBlt绘制到显示缓冲区(
      FrameBuffer)。
      当创建此位图后,还需要应用SelectObjct将其关联到指定的hdc中,
      当我们不需要此位图时,应该调用DeleteObject来将其删除。
      hdc     设备描述表句柄
      nWidth  以像素为单位指定位图宽度
      nHeigth 以像素为单位指定位图高度
      返回值:成功返回位图句柄,失败返回NULL
参见  CreateCompatibleDC,DeleteObject,SelectObject
-----------------------------------
名称  CreateCompatibleDC
原型  HDC WINAPI CreateCompatibleDC(HDC hdc)
描述  创建一个指定设备的内存设备描述表句柄
      内存设备描述表句柄是只建立在内存中的,当其被创建时只有一个像素大小,当一个应用程序需要
      使用它来完成绘图操作时,一定要给它选定一个正确大小的位图。
      通常我们使用CreateCompatibleBitmap 指定位图的大小颜色。
      当我们不再使用此设备描述表时,依然用DeleteDC来将其删除。
      hdc   指向存在的设备描述表句柄。
            当其为NULL时,指向当前应用程序的当前屏幕
      返回值:成功返回内存设备描述表句柄;失败返回NULL
参见  CreateCompatibleBitmap,DeleteDC
-----------------------------------
名称  CreateRectRgn
原型  HRGN WINAPI CreateRectRgn(INT left, INT top, INT right, INT bottom)
描述  创建一个矩形区域图形对象
      left    矩形左上角横标
      top     矩形左上角纵标
      right   矩形右下角横标
      bottom  矩形右下角纵标
      返回值:成功返回被创建区域的句柄;失败返回NULL
参见  DeleteObject, SelectObject
-----------------------------------
名称  CreateRectRgnIndirect
原型  HRGN WINAPI CreateRectRgnIndirect(const RECT* rect )
描述  创建一个矩形区域图形对象的另一种方法
      这种方法创建的矩形区域与用CreateRectRgn完全相同,只是参数不同而已
      rect   指向欲创建矩形区域的RECT结构指针
      返回值:成功返回被创建区域的句柄;失败返回NULL
参见  DeleteObject, SelectObject ,CreateRectRgn
-----------------------------------
名称  SetRectRgn
原型  VOID WINAPI SetRectRgn(HRGN hrgn, INT left, INT top, INT right, INT bottom )
描述  改变一个指定区域图形对象的大小
      hrgn    区域的句柄
      left    改变后的矩形左上角横标
      top     改变后的矩形左上角纵标
      right   改变后的矩形右下角横标
      bottom  改变后的矩形右下角纵标
      目前版本的该函数无返回值
参见  CreateRectRgn
-----------------------------------
名称  CreateRoundRectRgn
原型  HRGN WINAPI CreateRoundRectRgn(INT left, INT top, INT right, INT bottom,
INT ellipse_width, INT ellipse_height )
描述  创建一个圆角矩形区域图形对象
      left    矩形左上角横标
      top     矩形左上角纵标
      right   矩形右下角横标
      bottom  矩形右下角纵标
      nWidthEllipse    圆角的椭圆宽度
      nHeightEllipse   圆角的椭圆高度
      返回值:成功返回被创建区域的句柄;失败返回NULL     
参见  DeleteObject, SelectObject,CreateRectRgn, CreateRectRgnIndirect
-----------------------------------
名称  CreateEllipticRgn
原型  HRGN WINAPI CreateEllipticRgn(INT left, INT top, INT right, INT bottom )
描述  创建一个椭圆区域图形对象
      left   左上角横标
      top    左上角纵标
      right  右上角横标
      bottom 右上角纵标  
      返回值:成功返回被创建区域的句柄;失败返回NULL
参见  DeleteObject, SelectObject
-----------------------------------
名称  CreateEllipticRgnIndirect
原型  HRGN WINAPI CreateEllipticRgnIndirect(const RECT *rect )
描述  创建一个椭圆区域图形对象的另一种方法
      这种方法创建的椭圆区域与用CreateElliptRgn完全相同,只是参数不同而已
      rect   指向欲创建椭圆区域外框的RECT结构指针
      返回值:成功返回被创建区域的句柄;失败返回NULL
参见  CreateEllipticRgn
-----------------------------------
名称  GetRegionData
原型  DWORD WINAPI GetRegionData(HRGN hrgn, DWORD count, LPRGNDATA rgndata)
描述  得到指定区域的数据
      hrgn   区域句柄
      count  存放得到数据的缓冲区的长度
      rgndata 指向得到数据的缓冲区指针
      返回值:成功返回 1,失败:如果count不够太返回所需长度,否则返回 0,
参见 
-----------------------------------
名称  PtInRegion
原型  BOOL WINAPI PtInRegion(HRGN hrgn, INT x, INT y )
描述  判断一个点是否在指定区域内
      hrgn    区域句柄
      x       该点横标
      y       该点纵标
      返回值:在此区域返回TRUE,否则返回FALSE
参见  RectInRegion
-----------------------------------
名称  RectInRegion
原型  BOOL WINAPI RectInRegion(HRGN hrgn, const RECT *rect )
描述  判断一个矩形是否在指定区域内
      hrgn   区域句柄
      rect   指向矩形的指针
      返回值:在此区域返回TRUE,否则返回FALSE
参见  PtInRegion
-----------------------------------
名称  EqualRgn
原型  BOOL WINAPI EqualRgn(HRGN hrgn1, HRGN hrgn2 )
描述  判断两个区域的大小和形状从而断定其是否相同
      hrgn1    区域1句柄
      hrgn2    区域2句柄
      返回值:相等返回TRUE,否则返回FALSE
参见  CreateRectRgn, CreateRectRgnIndirect
-----------------------------------
名称  CombineRgn
原型  INT WINAPI CombineRgn(HRGN hDest, HRGN hSrc1, HRGN hSrc2, INT mode)
描述  组合两个区域图形对象为一个
      hDest    目的区域句柄
      hSrc1    区域1
      hSrc2    区域2
      mode     组合模式,它必需是下面列表中的一种:
        RGN_AND     两个区域“与”,取交集部分
        RGN_OR      两个区域“或”,取并集
        RGN_XOR     两个区域“异或”,为重合部分之外的区域
        RGN_COPY    从区域1直接拷贝
        RGN_DIFF    组合两个区域不同的部分
     返回值:随着组合结果的不同,其返回下列值之一:
           NULLREGION    区域为空
           SIMPLEREGION  区域为单一矩形
           COMPLEXREGION 区域为多个矩形组合
           ERROR         区域未被创建
参见  CreateRectRgn, CreateRectRgnIndirect
-----------------------------------
名称  OffsetRgn
原型  INT WINAPI OffsetRgn(HRGN hrgn, INT x, INT y )
描述  向指定方向移动区域图形对象
      hrgn   区域指针
      x      横向移动单位,正数表左移,负数表右移
      y      纵向移动单位,正数表上移,负数表下移
      返回值: 其返回下列值之一:
           NULLREGION    区域为空
           SIMPLEREGION  区域为单一矩形
           COMPLEXREGION 区域为多个矩形组合
           ERROR         区域未被创建      
参见 
-----------------------------------
名称  GetRgnBox
原型  INT WINAPI GetRgnBox(HRGN hrgn, LPRECT rect )
描述  得到区域的边界矩形大小
      hrgn   区域句柄
      rect   指向存放矩形大小数据的指针
      返回值:区域属性, 其返回下列值之一:
           NULLREGION    区域为空
           SIMPLEREGION  区域为单一矩形
           COMPLEXREGION 区域为多个矩形组合
           ERROR         区域未被创建      
参见 
-----------------------------------
名称  InvalidateRgn
原型  BOOL WINAPI InvalidateRgn(HWND hwnd, HRGN hrgn, BOOL bErase)
描述  给指定的窗口更新区域增加区域的覆盖范围
      hwnd    窗口句柄
      hrgn   区域句柄
      bErase  背景擦除标识,目前版本只能填TRUE
      返回值:永远返回非0
参见  InvalidateRect, ValidateRect,ValidateRgn
-----------------------------------
名称  GetUpdateRgn
原型  int WINAPI GetUpdateRgn(HWND hwnd, HRGN hrgn, BOOL bErase)
描述  得到指定窗口的全部显示区域
      hwnd    窗口句柄
      hrgn    指向得到的显示区域的结构指针
      bErase  目前版本没用此叁数
      返回值:区域属性, 其返回下列值之一:
           NULLREGION    区域为空
           SIMPLEREGION  区域为单一矩形
           COMPLEXREGION 区域为多个矩形组合
           ERROR         区域未被创建      
参见 
-----------------------------------
名称  ValidateRgn
原型  BOOL WINAPI ValidateRgn(HWND hwnd, HRGN hrgn)
描述  给指定的窗口更新区域减去区域的覆盖范围
      hwnd    窗口句柄
      hrgn   区域句柄
      返回值:成功返回非0值;失败返回0
参见 
-----------------------------------
名称  DrawDIB
原型  BOOL WINAPI DrawDIB(HDC hdc,int x,int y,PMWIMAGEHDR pimage)
描述  在指定位置画图,目前版本可支持的画图文件类型是BMP,颜色有 2 , 4, 16 色
      hdc   指向存在的设备描述表句柄。
      x     画图横标
      y     画图纵标
      pimage  指向图形数据的指针
              如果图形数据在BMP文件中,且Makefile中有此编译文件,可按如下引用:
       image_BMP主文件名
       例如: BMP文件 arrow.bmp
             extern MWIMAGEHDR image_arrow;
             DrawDIB( hdc, 0,0, &image_arrow);
      返回值:成功返回TRUE; 失败返回FALSE
参见 
-----------------------------------
名称  BitBlt
原型  BOOL WINAPI BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,
int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop)
描述  BitBlt(读作bit blit)函数实现位块传送功能。
      它将源设备描述表中将一个矩形区的像素传到目标设备描述表中大小相同的矩形。
      通过此函数,被传送的图块直接显示到目标设备中。
      hdcDest       目标设备描述表句柄
      nXDext        目标矩形左上角横标
      nYDest        目标矩形左上角纵标
      nWidth        目标矩形宽度
      nHeight       目标矩形高度
      hdcSrc        源设备描述表句柄
      nXSrc         源矩形左上角横标
      nYSrc         源矩形左上角纵标
      dwRop         光删操作码
                    当前的MicroWindow版本只支持 SRCCOPY模式,即直接拷贝
      返回值:成功返回非零值;失败返回0                    
参见 
-----------------------------------
名称  GdJPEG
原型  #include device.h
      GdJPEG(PSD psd, MWCOORD destx, MWCOORD desty, MWCOORD width,
      MWCOORD height,MWBOOL fast_grayscale, char* filename)
描述  这是MicroWindow底层支持的JPEG支持引擎
      用来将JPEG图片文件读出后按像素对应写入到指定设备描述表
      因为是底层函数,所以参数众多,并要包含device.h头文件
      psd     设备描述表指向的PSD结构(MicroWindow的屏幕显示设备)
        PSD结构是包含在hdc中的一项,在device.h中定义:
         typedef struct _mwscreendevice *PSD;
         typedef struct _mwscreendevice {
           MWCOORD xres;           /* X screen res (real) */
           MWCOORD yres;           /* Y screen res (real) */
           MWCOORD xvirtres;       /* X drawing res (will be flipped in portrait mode) */
           MWCOORD yvirtres;       /* Y drawing res (will be flipped in portrait mode) */
           int     planes;         /* # planes*/
           int     bpp;            /* # bpp*/
           int     linelen;        /* line length in bytes for bpp 1,2,4,8*/
                                   /* line length in pixels for bpp 16, 24, 32*/ 
           int     size;           /* size of memory allocated*/
           long    ncolors;        /* # screen colors*/ 
           int     pixtype;        /* format of pixel value*/
           int     flags;          /* device flags*/                                   
           void *  addr;           /* address of memory allocated (memdc or fb)*/
               ...
               (详见device.h中的描述)
         }SCREENDEVICE;
      destx   目标的左上角横标
      desty   目标的左上角纵标
      width   JPEG图像的像素宽度
      heigth  JPGE图像的像素高度
      fast_grayscale  TRUE表示将JPEG图用灰阶方式转换(快速,推荐)
                      FALSE表示将JPEG图用彩色对照灰阶方式转换
      filename  JPEG图像的文件名
      该函数无返回值。
参见  GdBMP
-----------------------------------
名称  GdBMP
原型  int GdBMP (PSD psd, MWCOORD destx, MWCOORD desty, MWCOORD width, MWCOORD height,
 char* filename)
描述  这是MicroWindow底层支持的bmp文件的引擎
      psd     设备描述表指向的PSD结构(MicroWindow的屏幕显示设备)
      destx   目标的左上角横标
      desty   目标的左上角纵标
      width   bmp图像的像素宽度
      heigth  bmp图像的像素高度
      filename  bmp图像的文件名
      返回值:成功返回0,失败返回-1
参见  GdJPEG
-----------------------------------
名称  GetSystemPaletteEntries
原型  UINT WINAPI GetSystemPaletteEntries(HDC hdc,UINT iStartIndex,UINT nEntries, LPPALETTEENTRY lppe)
描述  从指定设备描述表中得到系统调色板数值
      hdc         : 图形设备句柄
      iStartIndex : 调色板起始序列号
      nEntries    : 得到系统调色板数值的总个数
      lppe        : 存放数值内存指针
      返回值 : 成功,得到系统调色板数值的个数; 失败返回0     
参见 
-----------------------------------

     **********************************
     *     控件函数                    *
     **********************************

-----------------------------------
名称  CreateMenu
原型  HMENU WINAPI CreateMenu(void)
描述  创建菜单
      系统创建菜单的内部的数据结构
      返回值 : 成功,菜单句柄,失败,NULL
参见  DestroyMenu
-----------------------------------
名称  LoadMenuEx
原型  HMENU WINAPI LoadMenuEx(NAMEINFO *minfo, LPCSTR lpMenuName,int count)
描述  系统装载菜单定义的数据,这是MicroWindow的专用函数
      minfo      菜单数据指针
                 如果在资源文件中定义菜单,该参数必需用固定的名称  menu_info,例如:
         ......
         extern NAMEINFO menu_info[];
         ......
         LoadMenuEx(menu_info,"TEST-MENU",MAX_MENUNUMBER);
      lpMenuName 指向菜单名称的字符串指针              
      count      menu_info 资源文件中定义的菜单总个数
      实际上,资源文件经编译后,菜单部分数据被放置在menu_info数组中,LoadMenuEx函数即要从
      menu_info数组中根据lpMenuName定位,然后开始装载。
      返回值:成功返回菜单句柄;失败返回NULL
参见  CreateMenu
-----------------------------------
名称  DestroyMenu
原型  BOOL WINAPI DestroyMenu(HMENU hMenu)
描述  销毁指定的菜单
      该函数用来销毁不属于窗口的菜单,一个分配给窗口的菜单会在程序关闭时自动删除
      hMenu    菜单句柄
      返回值:成功返回非0值;失败返回0
参见  CreateMenu, DeleteMenu, RemoveMenu
-----------------------------------
名称  InsertMenu
原型  BOOL WINAPI InsertMenu(HMENU hMenu, UINT uiPosition, UINT uiFlags, UINT uiIDNewItem,
 LPCSTR lpNewItem)
描述  在菜单中插入一个新的菜单项
      这个函数已经被InsertMenuItem 替代,但如不想使用InsertMenuItem 的新特性,InsertMenu
      仍然可以使用。
      hMenu        菜单句柄
      uiPosition   菜单插入位置, 或是菜单ID号
      uiFlags      插入方式,它必需是下述之一:
         MF_BYPOSITION  按照位置(uiPosition)插入菜单项
         MF_BYCOMMAND   按照ID插入菜单项
      uiIDNewItem  此菜单项ID号  
      lpNewItem    指向此菜单项内容的字符串指针,如为NULL则为一空白菜单
      返回值:成功返回TRUE;失败返回FALSE
参见  AppendMenu, DeleteMenu,InsertMenuItem
-----------------------------------
名称  AppendMenu
原型  BOOL WINAPI AppendMenu(HMENU hMenu, UINT uiFlags, UINT uiIDNewItem, LPCSTR lpNewItem)
描述  在菜单末尾添加一个新的菜单项
      这个函数已经被InsertMenuItem 替代,但如不想使用InsertMenuItem 的新特性,AppendMenu
      仍然可以使用。
      hMenu        菜单句柄
      uiFlags      该参数目前无用
      uiIDNewItem  添加菜单项的ID号
      lpNewItem    指向此菜单项内容的字符串指针,如为NULL则为一空白菜单
      返回值:成功返回TRUE;失败返回FALSE      
参见  DeleteMenu,InsertMenuItem,InsertMenu
-----------------------------------
名称  InsertMenuItem
原型  BOOL WINAPI InsertMenuItem(HMENU hMenu,UINT uItem,BOOL fByPosition,LPMENUITEMINFO lpmii)
描述  在菜单指定位置插入新的菜单项
参见 
-----------------------------------
名称  ModifyMenu
原型  BOOL WINAPI ModifyMenu(HMENU hMenu, UINT uiPosition, UINT uiFlags,UINT uiIDNewItem, LPCSTR lpNewItem)
描述  修改一个已经存在的菜单项
      hMenu        菜单句柄
      uiPosition   菜单插入位置, 或是菜单ID号
      uiFlags      插入方式,它必需是下述之一:
         MF_BYPOSITION  按照位置(uiPosition)插入菜单项
         MF_BYCOMMAND   按照ID插入菜单项
      uiIDNewItem  此菜单项ID号  
      lpNewItem    指向此菜单项内容的字符串指针,如为NULL则为一空白菜单
      返回值:成功返回TRUE;失败返回FALSE     
参见  AppendMenu,InsertMenu
-----------------------------------
名称  RemoveMenu
原型  BOOL WINAPI RemoveMenu(HMENU hMenu, UINT item, UINT flags)
描述  删除本身没有子菜单的菜单项
      hMenu        菜单句柄
      item         菜单排列位置或是菜单ID号
      flags        操作标识,可以为下列之一:
         MF_BYPOSITION  删除位置等于item菜单项
         MF_BYCOMMAND   删除ID等于item的菜单项
      返回值:成功返回TRUE;失败返回FALSE        
参见  DeleteMenu,GetSubMenu
-----------------------------------
名称  DeleteMenu
原型  BOOL WINAPI DeleteMenu(HMENU hMenu, UINT item, UINT flags)
描述  删除菜单项,如此菜单项带有子菜单,连同一起删除
      hMenu        菜单句柄
      item         菜单排列位置或是菜单ID号
      flags        操作标识,可以为下列之一:
         MF_BYPOSITION  删除位置等于item菜单项
         MF_BYCOMMAND   删除ID等于item的菜单项
      返回值:成功返回TRUE;失败返回FALSE        
参见  GetSubMenu,RemoveMenu
-----------------------------------
名称  GetSubMenu
原型  HMENU WINAPI GetSubMenu(HMENU hMenu, int pos)
描述  得到指定菜单项的子菜单句柄
      hMenu        菜单句柄
      pos          菜单项位置
      返回值:成功返回子菜单句柄;如该菜单项无子菜单,返回NULL
参见 
-----------------------------------
名称  EnableMenuItem
原型  BOOL WINAPI EnableMenuItem(HMENU hMenu, UINT item, UINT flags)
描述  使菜单项激活、禁止或变灰
      hMenu        菜单句柄
      item         菜单位置或ID
      flags        功能标识,是以下两类的组合:
       一:
         MF_BYPOSITION  位置等于item菜单项
         MF_BYCOMMAND   ID等于item的菜单项
       二:
         MF_DISABLED    菜单项禁止使用
         MF_ENABLED     激活菜单项
         MF_GRAYED      菜单项禁止使用,并且变成灰色
      返回值:成功返回TRUE;失败返回FALSE
参见  CheckMenuItem
-----------------------------------
名称  CheckMenuItem
原型  BOOL WINAPI CheckMenuItem(HMENU hMenu, UINT uiIDCheckItem, UINT uiCheck)
描述  设置菜单项的检查标记属性,即前面是否有“对勾”
      hMenu          菜单句柄
      uiIDCheckItem  菜单位置或ID
      uiCheck        功能标识,是以下两类的组合:
       一:
         MF_BYPOSITION  位置等于uiIDCheckItem的菜单项
         MF_BYCOMMAND   ID等于uiIDCheckItem的菜单项
       二:
         MF_CHECKED     前面有“对勾”
         MF_UNCHECKED   前面没有“对勾”
      返回值:成功返回TRUE;失败返回FALSE
参见  EnableMenuItem
-----------------------------------
名称  TrackPopupMenu
原型  BOOL WINAPI TrackPopupMenu(HMENU hMenu, UINT uiFlags, int x, int y,
 int nSystemMenu, HWND hWnd, const RECT *lpReserved)
描述  在指定位置弹出菜单
      hMenu          菜单句柄
      uiFlags        操作标识,目前只支持TP_TRACKPOPUP,即弹出子菜单
      x              弹出位置左上角横标
      y              弹出位置左上角纵标
      nSystemMenu    该参数目前无效
      hWnd           菜单所属窗口句柄
      lpReserved     该参数目前无效
      返回值:成功返回TRUE;失败返回FALSE
参见  GetSubMenu
-----------------------------------
名称  MessageBox
原型  MessageBox(HWND hParentWnd, LPCSTR pszText, LPCSTR pszCaption, UINT dwStyle)
描述  弹出一个消息框
      这个消息框包含程序定义的消息、标题图标和按钮 
      hParentWnd     消息窗口的父窗口
      pszText        窗口显示的字符
      pszCaption     窗口的标题名
      dwStyle        窗口的属性
             MB_OK            消息窗口有<确定>键
             MB_OKCANCEL      消息窗口有<确定>,<取消>键
             MB_YESNO         消息窗口有<是>,<否>键
             MB_RETRYCANCEL   消息窗口有<重试> <取消> 键
             MB_ABORTRETRYIGNORE  消息窗口有 <忽略>键
             MB_YESNOCANCEL       消息窗口有<是> <否> <取消> 键
             MB_ICONSTOP          消息窗口有 “叉子”图标
             MB_ICONINFORMATION   消息窗口有 "i" 图标
             MB_ICONEXCLAMATION   消息窗口有 "!" 图标
             MB_ICONQUESTION      消息窗口有 "?" 图标
     返回值 : 点击的键对应代号
参见 
-----------------------------------
名称  DialogBoxEx
原型  int WINAPI DialogBoxEx(HINSTANCE hInst, LPCSTR lpDialog, HWND hWnd,
 DLGPROC lpDlgFunc,NAMEINFO *dinfo,int count)
描述  配合资源文件,生成弹出一个对话框
      这是MicroWindow的专用函数,目前版本没有DialogBox函数
      hInst     实例句柄,这里固定填NULL
      lpDialog  对话框名称,和资源文件对话框定义相对应(忽略大小写)
      hWnd      对话框父窗口句柄
      lpDlgFunc 对话框消息处理函数地址
                实际上,该对话框的句柄被显式地传递到lpDlgFunc中,用此句柄来关闭对话框
                EndDialog(hwnd)
      dinfo     对话框消息,配合资源文件使用,固定为dialog_info,例如
   ......
                 extern NAMEINFO dialog_info[];
                 ......
                 DialogBoxEx( NULL, "DEMO", hwnd, demo_proc, dialog_info, DLGNUM );     
                实际上,资源文件编译后,对话框部分数据保存在dialog_info数组中,DialogBoxEx
                函数即从dialog_info数组中根据lpDialog定位,读出数据。
      count     资源文件中,定义的对话框的总数目
      返回值:成功返回0;失败返回-1
参见  EndDialog
-----------------------------------
名称  CheckRadioButton
原型  void WINAPI CheckRadioButton(HWND hDlg, int nIDFirst,int nIDLast,int nIDCheckButton)
描述  设置一组单选按键控件
      hDlg       对话框句柄
      nIDFirst   设置一组单选按键的起始ID 号
      nIDLast    设置一组单选按键的结束ID 号
      nIDCheckButton   要选中的单选项的ID 号
      系统设置 nIDCheckButton ID 号的单选项为选中
      其它ID 号在nIDFirst和nIDLast范围内的单选项为没选中
      该函数无返回值
参见  CheckDlgButton
-----------------------------------
名称  SetDlgItemInt
原型  void WINAPI SetDlgItemInt(HWND hDlg,int nID, UINT wParam,BOOL bSigned)
描述  将对话框中指定控件的整数转为显示字符
      hDlg     对话窗句柄
      nID      控件的 ID 号
      wParam   整数,转换成显示字符
      bSigned  这里固定填TRUE
      该函数无返回值
参见  GetDlgItemInt
-----------------------------------
名称  GetDlgItemInt
原型  UINT WINAPI GetDlgItemInt(HWND hDlg, int nID, BOOL *lpTranslated, BOOL bSigned)
描述  将对话框中指定控件的文本转为整数
      hDlg         对话窗句柄
      nID            控件的 ID 号
      lpTranslated   指向字符的整数是否溢出,如溢出为TRUE
      bSigned        TRUE为有符号数
     返回值 : 整数值
参见  SetDlgItemInt
-----------------------------------
名称  SetDlgItemText
原型  void WINAPI SetDlgItemText(HWND hDlg, int nID, LPSTR lpStr)
描述  设置对话框中控件的标题或文字
      hDlg    对话框句柄
      nID     控件的 ID 号
      lpStr   存放字符串地址
      该函数无返回值    
参见  GetDlgItemText
-----------------------------------
名称  GetDlgItemText
原型  int WINAPI GetDlgItemText(HWND hDlg, int nID, LPSTR lpStr, int nMax)
描述  得到对话框中控件的标题或文字
      hDlg    对话框句柄
      nID     控件的 ID 号
      lpStr   存放字符串地址    
      nMax    地址内存长度
      返回值:成功返回字符串长度;失败返回NULL
参见  SetDlgItemText
-----------------------------------
名称  CheckDlgButton
原型  void WINAPI CheckDlgButton(HWND hDlg, int  nIDButton, UINT wCheck)
描述  设置按键的状态
      hDlg       对话框句柄
      nIDButton  按键的 ID 号
      wCheck     设置的状态,有两种,TRUE 和 FALSE
参见 
-----------------------------------
名称  EndDialog
原型  BOOL WINAPI EndDialog(HWND hDlg,int Result)
描述  关闭对话框
      hDlg    对话框句柄
      Result  这里固定填NULL
      返回值:成功返回TRUE;失败返回FALSE
参见  DialogBoxEx
-----------------------------------

×××××××××××××××××××
×                              ×
×   其他的系统函数               ×
×                              ×
×××××××××××××××××××

---------------------------------
名称:MwUserInit
原型:int MwUserInit (int ac, char **av)
描述:给用户提供名称接口。可以传递命令行参数。
      函数调用在microwindow GUI建立之前, WinMain()函数之前。
      int ac 参数的数目
      char **av 每个参数的指针
      例:int MwUserInit (int argc, char **argv)
        {
 SystemArgc = argc;
 SystemArgv = argv;

 InitCategory ();
 GetConfig(&config);

 if (config.SortBy>=2) config.SortBy = SORT_BY_ALP;
 return 0;
 }
      返回值:
             >=0 成功
             0<  失败
---------------------------------
名称:MwUserClose
原型:void MwUserClose (void)
描述:名称接口,可以传递命令行参数。
      函数调用在microwindow结束之前
参见:MwUserInit
---------------------------------
名称:IsUSBOnLine
原型:BOOL IsUSBOnLine (void)
描述:得到usb口是否连线的状态。
      返回值:TRUE: 连线
       FALSE: 未连线
---------------------------------
名称:IsSystemWriteProtect
原型:BOOL IsSystemWriteProtect (void)
描述:得到flash的写保护状态。
      返回值:TRUE: 写保护
       FALSE: 没有写保护
---------------------------------
名称:GetSystemPowerStatus
原型:BOOL GetSystemPowerStatus (SYSTEM_POWER_STATUS *lpPw)
描述:得到电池的状态,数据结构如下:
      typedef struct {
  BYTE ACLineStatus; // 0:未连线, 1:连线, 255:未知
  BYTE BatteryFlag; // 1:高 2:低 4:临界 8:充电 255:未知
  BYTE BatteryLifePercent; // 0 ~ 100, or 255:未知
  BYTE Reserved1;  // 0
  int hi;   // 电压高端数值
  int lo;   // 电压低端数值
 } SYSTEM_POWER_STATUS;
      返回值:TRUE: 成功
       FALSE: 失败
注意:如果usb插槽在线,ACLineStatus=1,BatteryFlag=8
---------------------------------
名称:showabout
原型:int showabout( char *file )
描述:显示关于信息。
      file 调用关于模块的程序在系统程序注册数据库中注册的函数名.
      范例:showabout("abc");  在这里abc为程序名称
      返回值:0 有关于信息
              1 无关于信息
----------------------------------
名称:showhelp
原型:int WINAPI showhelp( char *name, char *buf )
描述:弹出一个当前界面的帮助文档,让用户了解此界面的功能。
      name:文档目录和帮助文档名缓存区。
      buf: 程序界面名缓存区。
      比如:showhelp("abc","main");
           在这里abc是程序名称,main 表示要从帮助文档的 main 标记处开始显示
注意: 帮助文档名要和打包程序名相同。如npd/npd.hlp,guess/guess.hlp.
      在同一程序中不同界面显示帮助,应如下调用:
              如主界面 showhelp( "npd", "main" );
              打开界面 showhelp( "npd", "open" );
      帮助文档应按如下格式书写:
                   [main]
                   首要帮助文本
                   [open]
                   打开界面帮助文本
                   ....
                   ....
---------------------------------

×××××××××××××××××××
×                              ×
×                              ×
×      数据库函数               ×
×                              ×
×                              ×
×××××××××××××××××××
---------------------------------
说明:这套数据库系统是GGV专门为开发者定做的数据库系统,应用这套系统可以轻松的建立、保存、编辑数据库。如果使用WalkPad Designer的话,系统会默认关联该数据库函数库的动态链接库。我们只要包含头文件
#include "pub/dbodm/newdbapi.h" 就可以使用这些函数了。
---------------------------------
名称:DB_create
原型:int DB_create( char *filename,DB_KEY *key,DB_RECORD *rec )
描述:创建一个数据库文件. 创建后新创建的文件处于打开的状态.
      由于创建后生成三个文件,既控制文件,数据文件和一个索引表文件,
      所以调用此函数之前需要选择以谁为关键字来建立索引表。
      filename : 要创建的数据库文件名
      key : 根据不同的关键字组合选择索引表
      rec : 记录的结构类型 例:
      typedef struct {
 char name[20];
 char age[4];
      }REC_RECORD;
      返回值:>=0 正常
              -1  失败
参见:DB_open
----------------------------------
名称:DB_open
原型:int DB_open( char *filename, int mode )
描述:打开现有数据库文件。如果不能打开,用DB_create建立。
      filename : 要打开的数据库文件名。
      mode :打开方式(O-RDONLY :只读方式,O-RDWR:读写方式)
      返回值:正常 : >=0
              失败 : -1    输入的文件名为空或长度为零或系统出错
       -2    数据库文件不存在
       -3    在控制文件中根据文件名读控制文件时出错
       -4    在控制文件中结构体转换时出错
       -5    创建数据文件时出错
       -6    创建索引表文件时出错
       -7    索引表文件出错
       -99   转成文件句柄时出错(多于30个数据库句柄)
------------------------------------
名称:DB_selidx
原型:int DB_selidx( int fd,DB_KEY *key)
描述:选择一个关建字索引表. 索引表选定后对文件的操作都是以这个索引表的关键字为准的
      选择新的索引表后,当前记录不一定是数据库文件的第一条记录。
      fd  :文件标识
      key :根据不同的关键字组合选择索引表
      返回值:>=0  成功
              -1   失败
参见:DB_delidx,DB_addidx
---------------------------------
名称:DB_addidx
原型:int DB_addidx( int fd,DB_KEY *key)
描述:添加一个关建字索引表。数据库文件中的索引表关键字最多可由3个关键字组合创建组成。
      组合关键字的类型必须相同,char 与 unsigned char在本dbodm认为相同,但TYPEBIN不能作为关键字。
      数据库文件中最多可有10个索引表同时存在。
      fd : 文件标识
      *key : 选择不同的关键字组合建立索引表
      返回值:>=0 正常
              -1  失败
参见:DB_delidx,DB_selidx
-----------------------------------
名称:DB_delidx
原型:int DB_delidx( int fd,DB_KEY *key)
描述:删除一个关建字索引表。
      fd : 文件标识
      *key : 根据不同的关键字组合选择要删除的索引表
      返回值:>=0 正常
              -1  失败
参见:DB_addidx,DB_selidx
-----------------------------------
名称:DB_remove
原型:int DB_remove( char *filename )
描述:删除数据库文件。
      filename : 要删除的数据库文件名
      返回值:>=0 正常
              -1  失败
参见:DB_create,DB_open
-----------------------------------
名称:DB_org
原型:int DB_org(char *filename)
描述:重整数据库文件的存储空间,重整后offset将改变,
      并且会在AP存放数据库文件的目录下产生一个名为 *.reorg ( "*"代表数据库的名字 )
      的文件.AP可通过判断此文件是否存在来判断数据库是否被重整过.
      filename : 要重整的数据库文件名。
      返回值:>=0 正常
              -1  失败
参见:DB_create,DB_open,DB_close
-----------------------------------
名称:DB_close
原型:int DBclose( int fd )
描述:关闭数据库文件。
      fd : 文件标识
      fd可以从DB_create,DB_open处获得。
      例:static int DBINDEX_fd;
          DBINDEX_fd = DB_create(FileName, &db_key, &db_record);
          ...
          DB_close(DBINDEX_fd);
          ...
      返回值:0 正常
              <0 失败
参见:DB_create,DB_open
-----------------------------------
名称:DBget_cur_off
原型:off_t DBget_cur_off(int fd)
描述:取当前记录的偏移值,文件为空时,取的是存放的起始地址。
      fd : 文件标识
      返回值:>=0 正常
              -1  失败
参见:DB_close
----------------------------------------
名称:DB_readn_before_seek
原型:off_t DBreadn_before_seek(int fd,unsigned char * key,int *keylen,
unsigned char *record,int *reclen,int)
描述:读出当前记录后,文件指针定位到指定一条记录.返回值为record指定的记录的偏移值
      fd : 文件标识
      key : 指向记录中关键字值的缓冲区指针
      keylen : 关键字长度
      record : 指向记录中数据值的缓冲区指针
      reclen : 指向记录中数据长度的缓冲区指针
      mode : 定位到指定一条记录
             CSMLEST :定位到最小一条记录
             CLAGEST :定位到最大一条记录
             CNXTLAG :定位到当前记录的下一条记录
             CPRVSML :定位到当前记录的前一条记录
      例:int rec_len, key_len;
          ...
          DBINDEX_fd = DB_create(FileName, &db_key, &db_record);
          DB_read_before_seek(DBINDEX_fd,(DBREC) & db_key, &key_len,
   (DBREC) & rec, &rec_len, CNXTLAG);
          ...
      返回值:ormal : RTN_OFFSET
              fail  : < 0
       其中 return thptr = 读完当前记录后移动光标至指定位置后
                     ok : 0
                     end of filr or begin of file : -2
                     error : -1
参见:DB_read_after_seek,DB_read_cur
--------------------------------------
名称:DB_read_cur
原型:off_t DB_read_cur(int fd,unsigned char *record )
描述:在索引表选定的情况下,在索引表中读出当前记录.返回值为当前记录的偏移值
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      返回值:正常: RTN_OFFSET     当前数据的偏移值
       错误: <0
参见:DB_read_after_seek
---------------------------------------
名称:DB_read
原型:off_t DB_read(int fd,unsigned char *record,int mode )
描述:读出指定key值的记录,并将它作为当前记录.返回值为当前记录的偏移值
      这里的key是根据索引表从record中取出的,所以,这里的key只是出口,
      输入key要根据索引表从record输入
         fd : 文件标识
         record : 指向记录中数据值的结构体指针
    mode : CKEY       数据库文件中有与输入的key值相同的key
  CLEKEY     若数据库文件中没有与输入的key值相同的key,则将文件指针定位到下
                                  一key中的第一条记录.若下一key不存在,则返回一负数
  CSEKEY     若数据库文件中没有与输入的key值相同的key,则将文件指针定位到上
                                  一条记录,若上一条记录不存在,则返回一负数
       返回值:正常: RTN_OFFSET    当前数据的偏移地址
               错误: <0
-----------------------------------------
名称:DBread_offset
原型:off_t DBread_offset(int fd,unsigned char *record,off_t offset )
描述:取出由正确offset指定的记录的数据,offset必须正确。
      fd : 文件标识
      record : 指向记录中数据值的缓冲区指针
      offset : 偏移地址
      返回值:正常: RTN_OFFSET     当前数据的偏移地址
       错误: <0
------------------------------------------
名称:DB_seek
原型:int DB_seek(int fd,int n,int mode)
描述:将当前记录定位到某条记录(offset=DB_END,定位到最后一条;
      offset=DB_BEGIN,定位到开始一条;否则根 据key,offset值定位到指定的一条)。
      fd : 文件标识
      mode : 定位方式
      mode=DB_END  -1; mode=DB_BEGIN  -2; mode=DB_CUR =0
             n:  >0向后n条   =0当前  <0向前n条
      返回值:0 正常
              0< 失败
--------------------------------------------
名称:DB_insert
原型:off_t DBinsert(int fd, unsigned char *record )
描述:向数据库文件中写入一条记录,并把这条记录设为当前记录
      若写入的key值与原有的key值相同时,则将新输入的这条记录排在原有同key值记录的后面。
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      例:DBINDEX_fd = DB_create(FileName, &db_key, &db_record);
          ...
          DB_insert(DBINDEX_fd, (DBREC) rec_file, sizeof(REC_RECORD),
       (DBREC) & db_key, sizeof(DB_KEY));
          ...
      返回值:正常: RTN_OFFSET
              失败: <0      
----------------------------------------
名称: DB_modify
原型:off_t DB_modify( int fd,unsigned char *record)
描述:修改当前记录的值.修改后的记录的偏移地址与修改前记录的偏移地址不同,id相同。
( id 由函数 DB_getid 取得)
       fd : 文件标识
       record : 指向记录中数据值的结构体指针
      返回值:正常: RTN_OFFSET
              失败: <0 
参见:DB_getid
-----------------------------------------
名称:DB_modify_cur
原型:off_t DB_modify_cur( int fd,unsigned char *record)
描述:在索引表选定的情况下,在索引表中修改当前记录的内容,
      修改后offset不变,关键字不变,rawid不变( rawid 由函数 DBget_rawid 取得)
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      返回值:normal : RTN_OFFSET
              fail : <0
----------------------------------------
名称:DB_modify_offset
原型:off_t DBmodify_offset( int fd,unsigned char *record,off_t offset)
描述:在索引表选定的情况下,在索引表中根据offset找到对应的那条记录,
      用输入的内容替换原有的内容,修改后offset不变,
      关键字不变,rawid不变( rawid 由函数 DBget_rawid 取得)
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      返回值:normal : RTN_OFFSET
              fail : <0
-----------------------------------------
名称:DB_change_key_cur
原型:off_t DB_change_key_cur(int fd,unsigned char * record)
描述:在索引表选定的情况下,在索引表中修改当前记录的内容,
      修改后offset改变,rawid不变( rawid 由函数 DBget_rawid 取得),文件指针指向修改后的记录
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      返回值:normal : RTN_OFFSET
              fail : <0
-------------------------------------------
名称:DB_change_key_offset
原型:off_t DB_change_key_offset(int fd,unsigned char * record,off_t offset1)
描述:在索引表选定的情况下,在索引表中输入正确的offset,根据offset找到对应的那条记录,
      用输入的内容替换原有的内容,修改后offset改变,rawid不变( rawid 由函数 DBget_rawid 取得),
      文件指针指向修改后的记录。
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      offset1 : 偏移地址
      返回值:normal : RTN_OFFSET
              fail : <0
-------------------------------------------
名称:DB_delete_offset
原型:int DBdelete_offset( int fd,off_t offset)
描述:删除指定的一条记录,删除后将文件指针指向被删除记录的下一条记录,
如果被删除的是最后一条记录,那么:
      如果最后一条记录所在的key中只有一条记录,则删除后将文件指针指向上一key的第一条记录
      如果最后一条记录所在的key中不止有一条记录,则删除后将文件指针指向上一条记录,
      直至key中最后一条记录被删除后将文件指针指向上一key的第一条记录
      (key和offset必须全都是正确的)。
      fd : 文件标识
      offset : 偏移地址
      返回值:正常:0
              错误: <0
--------------------------------------------
名称:DB_delete
原型:int DBdelete( int fd,unsigned char *record )
描述:删除指定key的第一条记录,删除后将文件指针指向被删除记录的下一条记录,
      如果被删除的是最后一条记录则删除后将文件指针指向上一key的第一条记录
      这里的key是根据索引表从record中取出的,输入key要根据索引表从record输入。
      fd : 文件标识
      record : 指向记录中关键字值的结构体指针
      返回值:>=0 正常
              -1  失败
--------------------------------------
名称:DB_delete_cur
原型:int DB_delete_cur( int fd )
描述:删除当前记录,并将后一条记录作为当前记录,如果被删除的是最后一条记录,那么:
      如果最后一条记录所在的key中只有一条记录,则删除后将文件指针指向上一key的第一条记录
      如果最后一条记录所在的key中不止有一条记录,则删除后将文件指针指向上一条记录,
      直至key中最后一条记录被删除后将文件指针指向上一key的第一条记录。
      fd : 文件标识
      返回值:正常: >=0
              失败:  -1     
参见:DBclose
--------------------------------------
名称:DB_key_rec_count
原型:int DB_key_rec_count(int fd,unsigned char *record)
描述:计算数据库文件中某一key值下有多少条记录,计算后文件指针指向不定
      这里的key是根据索引表从record中取出的,所以,输入key要根据索引表从record输入。
      fd : 文件标识
      record : 数据结构体指针
      返回值:正常: >=0      文件种记录的数目
              失败: <0
参见:DBclose
-----------------------------------
名称:DB_rec_count
原型:int DB_rec_count(int  fd )
描述:计算数据库文件中共有多少条记录,计算后文件指针指向不定
      fd : 文件标识
      返回值:正常: >=0      文件种记录的数目
              失败: -1 
参见:DB_close
-----------------------------------
名称:DB_key_count
原型:int DBkey_count(int  fd )
描述:fd : 文件标识
      返回值:normal : >=0     
              fail  : -1
参见:DB_close
-----------------------------------
名称:DB_get_dbversion
原型:int DB_get_dbversion( unsigned char *verbuf )
描述:取得数据库的版本号
      verbuf : 取得的数据库的版本号
      返回值:正常: 0
              失败: <0
参见:
-----------------------------------
原型:int DB_get_dbversion( unsigned char *verbuf )
描述:取得数据库文件的版本号.取得的版本号表示此数据库文件由哪个版本的数据库操作
      verbuf : 取得的数据库文件的版本号
      返回值:正常: 0
              失败: <0
参见:
-----------------------------------
名称:DB_write_apversion
原型:int DB_write_apversion(int fd,unsigned char *apverbuf)
描述:向数据库文件中写入应用程序的版本号( 第一次写入必须正确 ,再次写入将返回负值表示写入失败 )
      fd : 文件标识
      apverbuf : 写入的应用程序版本号
      返回值:正常: =0
              失败: <0
参见:
-------------------------------------------------------------------------------------------
名称:DB_read_apversion
原型:int DB_read_apversion(int fd,unsigned char *apverbuf)
描述:从数据库文件中读出应用程序的版本号
      fd : 文件标识
      apverbuf : 读出的应用程序版本号
      返回值:正常: 0
              失败: <0
参见:
-----------------------------------
名称:DB_lock
原型:int DB_lock(int fd)
描述:为整个数据库文件加锁。
      fd : 文件标识
      返回值:正常: >=0
              失败: <0
参见:DB_close
-----------------------------------
名称:DB_unlock(int fd)
原型:int DBunlock(int fd)
描述:为整个数据库文件解锁。
      fd : 文件标识
      返回值:正常: >=0
              失败: <0
参见:DB_close
-----------------------------------
名称:DB_flush(int fd)
原型:int DBflush(int fd)
描述:刷新整个数据库文件
      fd : 文件标识
      返回值:正常: >=0
              失败: <0
参见:DB_close
-----------------------------------
名称:DB_seek_raw
原型:int DB_seek_raw(int fd,int mode)
描述:根据mode定位到指定的记录
      fd : 文件标识
      mode : 定位方式
             DB_BEGIN    定位到第一条记录
             DB_END      定位到最后一条记录
             CNXTLAG     定位到下一条记录
             CPRVSML     定位到上一条记录
      返回值:normal : 0
              fail   : <0
--------------------------------------
名称:DB_read_cur_raw
原型:int DB_read_cur_raw(int fd,unsigned char *record )
描述:直接从数据文件里读出当前数据文件指针指向的记录
      fd : 文件标识
      record : 指向记录中数据值的结构体指针
      返回值:normal : 0
              fail  : <0
---------------------------------------
名称:DBget_rawid
原型:off_t DBget_rawid(int fd,off_t offset)
描述:根据某条记录的offset取得这条记录的rawid,并将它作为返回值返回
      (此处的offset指的是某一索引表下记录的offset)
      fd : 文件标识
      offset : 偏移地址
      返回值:normal : 这条记录的id
              fail  : <0
--------------------------------------
名称:DB_read_rawid
原型:int  DB_read_rawid(int fd,off_t rawid,unsigned char *record)
描述:根据某条记录的rawid读出这条记录的内容
      fd : 文件标识
      offset : 某条记录的id
      record : 指向记录中数据值的结构体指针
      返回值:normal : 0
              fail  : <0
-----------------------------------

××××××××××××××××××××××
×                                   ×
×    时钟函数                        ×
×                                   ×
××××××××××××××××××××××
-----------------------------------
说明:这是GGV为开发者提供的时间相关部分的专用函数,如果使用WalkPad Designer,系统会默认关联时钟函数的动态链接库,我们只要在在头文件声明中加入:
#include "pub/time/timepub.h"
-----------------------------------
名称:date_cmp
原型:int date_cmp(char *date_1, char *date_2 )
描述:比较date_1与date_2的大小。
      char *date_1  形如ccyymmdd格式字符串
      char *date_2  形如ccyymmdd格式字符串
      yymmdd  范围  1950年至2049年 
 返 回 值:< 0  :  date_1 < date_2
                 =0  :  date_1 = date_2
                 >0  :  date_1 > date_2
---------------------------------------------
名称:date_expand
原型:int date_expand( char *sdate ,char * edate ,struct DATESTRU *date_array ,int max_years )
描述:扩展sdate与edate之间的日期。
      char *sdate  开始日期,如960301
      char *edate  终止日期,如991010
      struct DATESTRU *date_array;输出结果
      形如:960301961231970101971231980101981231990101991010
      int  max_years  sdate与edate之间的最大间隔年数
      结构说明:
  struct DATESTRU {
   char sdate[6];
   char edate[6];
  };
      返 回 值:0     成功
        -1    sdate > edate
-----------------------------------------
名称:ftime
原型:ftime(char *date)
描述:返回当前时间的格式化字符串。
      date  返回的值-参数结果
      例    如:
      Sat, Apr 28, 2001   04:04 PM
--------------------------------------------
名称:get_hms
原型:int get_hms(char ctime[])
描述:返回当前格式时间ctime 格式为(hhmmss)
      ctime 当前格式时间
      返 回 值:0
----------------------------------------------
名称:get_md
原型:int  get_md(char *mmdd)
描述:返回当前格式时间mmdd  格式为(mmdd)
      mmdd 当前格式时间
      返回值:mmdd格式时间
----------------------------------------
名称: get_ymd
原型:int get_ymd(char *cdate)
描述:返回当前格式时间cdate  格式为(ccyymmdd)
      cdate 当前格式时间
      例:char mydate[11];
          char yy[2];
          get_ymd(mydate);
          strncpy(yy,&zz[2],2);
          MessageBox(NULL,yy,"年",MB_OK);
      返回值:ccyymmdd的时间格式
---------------------------------------------
名称:get_ymdhms
原型:int get_ymdhms(char *dtime)
描述:返回当前格式时间dtime  格式为(ccyymmddhhmmss)
      dtime  当前格式时间
      返回值:ccyymmddhhmmss时间格式
参见:get_ymd
------------------------------------------------------------------------------
名称:isdate
原型:int isdate(char *str, char *datefmt)         
描述:检查字符串是否符合datefmt格式的指定的日期型时间格式。
      str 日期型字符串
      datefmt  日期型字符串格式  /*"CCYYMMDD", "MMDDCCYY", "DDMMCCYY", "MMDD" ×/
      返回值:1 符合datefmt格式
       0 不符合datefmt格式
--------------------------------------
名称:istime
原型:int istime(char *str, char *timefmt)
描述:检查字符串是否符合datefmt格式的指定时间格式
      char *str 时间型字符串
      char *timefmt  时间型字符串格式 "HHMMSS", "MMSS";也可以为任意组合
      返 回 值:1 符合timefmt格式
        0 不符合timefmt格式
----------------------------------------------
名称:newdate
原型:newdate( char *olddate, char *newdate, int days )
描述:在知道旧的日期的前提下,加/减间隔的天数(day)偏移,得到新的日期。
      olddate 输入的旧的日期型格式字符串(ccyymmdd)
         olddate可为不太规范的日期 如:19981254 可自动改为19990123
      newdate 新的日期 (输出)
      days      新日期与旧日期之间间隔的天数
      返 回 值:newdate的所在的weekday( 0: sunday  1: Monday ...  6: Saturday )
----------------------------------------
名称:newtime
原型:newtime( char *oldtime, char *newtime, int mins )   
描述:在知道旧的日期时间的前提下,加/减间隔的分钟(minute)数偏移,得到新的日期时间.
      oldtime 输入的旧的日期时间型格式字符串(ccyymmddhhmmss) ( I )
       oldtime可为不太规范的mmddhhmmss 如:19981254256567可自动改为19990124020607
      newtime 新的日期时间  (输出)
      mins    新时间与旧时间之间间隔的分钟数
      返 回 值:newtime的所在的weekday( 0: sunday  1: Monday ...  6: Saturday )
---------------------------------------------
名称:time2hms
原型:void time2hms(time_t dt,char *hms)
描述:用本地时间localtime()表示从19700101080000开始的秒数+TZ
      如: dt=4 hms="08:00:04"转换日期时间变量dt为时间格式字符串(hh:mm:ss)若dt=0L,则取当前时间。
      dt 输入的时间间隔(秒)
      hms "hh:mm:ss"格式的字符串指针(输出)
      返回值:无
------------------------------------------
名称:time2ymdhms
原型:time2ymdhms(time_t ltime,char *stime)
描述:用本地时间localtime()表示从19700101000000开始的秒数+TZ
      转换日期时间变量ltime(相对于1970年1月1日0时0分0秒)为日期时间格式字符串(ccyymmddhhmmss)。
      ltime   输入的时间间隔(秒)
      stime   返回的日期时间格式字符串(ccyymmddhhmmss)(输出)
----------------------------------------------
名称:time_cmp
原型:time_cmp(char *time_1, char *time_2 )
描述:比较日期时间格式字符串time_1和time_2的大小;time_1和time_2 比较的最大长度为12。
      time_1 日期时间格式(ccyymmddhhmmss)字符串
      time_2 日期时间格式(ccyymmddhhmmss)字符串
      返 回 值:<0  str1 小于 str2
        =0  str1 等于 str2
        >0  str1 大于 str2
--------------------------------------
名称:ymdhms2time
原型:int ymdhms2time(char *time_str , long *stime )
描述:将ymdhms格式的本地时间字符串转换为相对于1970年1月1日0时0分0秒的以秒为单位的时间值。
      time_str ymdhms格式字符串
      stime 以秒为单位的时间值  (输出)
----------------------------------------------
名称:date2date
原型:int date2date(char *date1,char *date2)   (year>=1900)
描述:改不规范的时间形式为正确时间形式(year>=1900)返回正确的时间形式。
      date1 不规范的日期形式ccyymmdd
      date2 正确的日期形式ccyymmdd  (输出)
      返回值:0    正确
       其他 错误
---------------------------------------------
名称:getdays
原型:int getdays(char *ptr)
描述:计算从1800年1月1日至输入的日期共有多少天
      ptr  形式为ccyymmdd的日期字符串
      返回值:从1800年1月1日至输入的日期间的天数
-------------------------------------------
名称:getdatefromccyymmWwD
原型:int getdatefromccyymmWwD(char *ptr,char *retptr)
描述:将形式为ccyymmWwD的日期字符串转换为ccyymmdd的形式并判断本月中是否有输入的周数
      ptr 形式为ccyymmWwD的日期字符串
      reptr 形式为ccyymmdd的日期字符串  (输出)
      返回值:1 : 该月有该周 
       0 : 该月没有该周
---------------------------------------------
名称:getdatefromWwwD
原型:void getdatefromWwwD(char *ptr,char *retptr)
描述:将形式为ccyymmWwD的日期字符串转换为ccyymmdd的形式
      ptr 形式为ccyymmWwD的日期字符串
      reptr 形式为ccyymmdd的日期字符串  (输出)
      返回值:无
--------------------------------------
名称:getformatday
原型:void getformatday(char *ptr,char *retptr,char *format)
描述:将输入的形为ccyymmdd的日期字符串转化为指定形式的字符串
      当format格式错时,retptr为空串。
      ptr   形为ccyymmdd的日期字符串 
      reptr 形为指定形式的日期字符串  (输出)
      format  指定的日期字符串形式
   CCYYMMDD
   CCYY-MM-DD
   CCYY-MM
   CCYY
   CC
   YYMMDD
   YY-MM-DD
   -YYMM
   -YY-MM
   -MMDD
   ......
     返回值:无
--------------------------------------
名称:getmaxdayofmonth
原型:int getmaxdayofmonth(char *ptr)
描述:输入形为ccyymmdd的日期字符串找出当月最大的一天的日期
      ptr   形式为ccyymmdd的日期字符串 
      返回值:当月最大一天的日期
---------------------------------------------
名称:getweekday
原型:void getweekday(char *ptr,char *buf,char *argv[])
描述:找出输入的形为ccyymmdd的日期所在周的每一天的日期
      ptr   形式为ccyymmdd的日期字符串
      argv[]  形式为ccyymmdd的日期字符串数组  ( 输出)
      返回值:无
---------------------------------------------
名称:get_weekofmonth
原型:int get_weekofmonth(char *ptr,char *retptr)
描述:将输入的形为ccyymmdd的日期字符串转化为ccyymmWwD形式字符串
      ptr   形式为ccyymmdd的日期字符串
      retptr   形为ccyymmWwwD的日期字符串(输出)
      返回值:得到输入的字符串是当年第几月第几周的星期几
--------------------------------------
原型:struct datetm *mkdate(int days)
描述:根据距1800年1月1日的天数 得一结构体指针
      days  距1800年1月1日的天数
      返回值:得到的结构体指针
----------------------------------------------------------------------
名称:mkdatechar
原型:struct datetm *mkdatechar(char *ptr)
描述:输入一形为ccyymmdd的日期字符串 返回时间结构体指针
      ptr  形为ccyymmdd的日期字符串  ( I )
      返回值:得到的结构体指针
--------------------------------------------------------------------------
名称:weekdayofmonth
原型:int weekdayofmonth(char *ptr,int week,int weekday,char *retptr)
描述:输入年月周和星期几返回形为ccyymmdd的日期字符串
      ptr 形为ccyymm的日期字符串
      week 第几周
      retptr 返回的形为ccyymmdd的字符串(输出 )
      weekday 星期几
      返回值:0 :  正确
       1 :  错误
----------------------------------------
名称:datetype1
原型:int daytype1(char *startptr,char *theptr,int day)
描述:此程序满足的循环规律为:每几天
      输入开始日期与间隔天数,检验输入的指定日期是否是从开始日期起在若干个间隔天数后的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      day 间隔天数
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔天数后的日期则返回1
--------------------------------------
名称:datetype2
原型:int daytype2(char *startptr,char *theptr,int week,char *weekday)
描述:此程序满足的循环规律为:每几周周***
      输入开始日期与间隔周数和星期几,
      检验输入的指定日期是否是从开始日期起在若干个间隔周数后指定星期几的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      week 间隔周数
      weekday 指定的星期几
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔周数后指定星期几的日期则返回1
--------------------------------------
名称:datetype3
原型:int daytype3(char *startptr,char *theptr,int month)
描述:此程序满足的循环规律为:每几月当日
      输入开始日期与间隔月数,检验输入的指定日期是否是从开始日期起在若干个间隔月数后当日的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      week 间隔周数
      weekday 指定的星期几
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔月数后当日的日期则返回1
---------------------------------------
名称:datetype4
原型:int daytype4(char *startptr,char *theptr,int month,int weekday)
描述:此程序满足的循环规律为:每几月当周周几
      输入开始日期与间隔天数,检验输入的指定日期是否是从开始日期起在若干个间隔
      月后指定当周周几的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      month 间隔月数
      weekday 当周星期几( I )
     返回值:如输入的指定日期不符合循环规律 则返回0,
      若输入的指定日期是从开始日期起在若干个间隔月后指定当周周几的日期则返回1
----------------------------------------------
名称:datetype5
原型:int daytype5(char *startptr,char *theptr,int year)
描述:此程序满足的循环规律为:每几年当月当日输入开始日期与间隔年数,
      检验输入的指定日期是否是从开始日期起在若干个间隔年数后当月当日的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      year 间隔年数
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔年后当月当日的日期则返回1
--------------------------------------
名称:datetype6
原型:int daytype1(char *startptr,char *theptr,int year,int weekday)
描述:此程序满足的循环规律为:每几年当月当周周几输入开始日期与间隔年数和当月当周周几,
      检验输入的指定日期是否是从开始日期起在若干个间隔年数后当月当周指定周几的日期。
      startptr 开始日期字符串指针CCYYMMDD
      theptr 指定日期字符串指针CCYYMMDD
      year 间隔年数
      weekday 当月当周周几
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔年数后当月当周指定周几的日期则返回1。
---------------------------------------------
名称:findtype1
原型:int findtype1(char *startptr,char *startdate,char *enddate,int day,char *retptr)
描述:此程序满足的循环规律为:每几天输入开始日期,循环日期所在范围与间隔天数,
      检验输入的指定日期是否是从开始日期起在若干个间隔日期后的日期。
      startptr 开始日期字符
      startdate 范围起始时间
      enddate 范围结束时间
      day 循环规则,每几天
      retptr 返回值(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,
      若输入的指定日期是从开始日期起在若干个间隔天数后的日期则返回1
----------------------------------------------
名称:findtype2
原型:int findtype2(char *startptr,char *startdate,char *enddate,int week,
char *weekday,char *retptr)
描述:此程序满足的循环规律为:每几周周***输入开始日期与间隔周数和指定星期几,
      检验输入的指定日期是否是从开始日期起一定时间范围内在若干个间隔周数后指定星期几的日期。
      startptr 开始日期字符
      startdate 范围起始时间
      enddate 范围结束时间(
      week 循环规则,每几周
      weekday 循环规则,周几
      retptr 返回值(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔周数后指定星期几的日期则返回1
--------------------------------------
名称:findtype3
原型:int findtype3(char *startptr,char *startdate,char *enddate,int month,char *retptr)
描述:此程序满足的循环规律为:每几月当日输入开始日期与间隔月数,
      检验输入的指定日期是否是从开始日期起一定时间范围内在若干个间隔月数后当日的日期。
      startptr  开始日期字符
      startdate  范围起始时间
      enddate  范围结束时间
      month  循环规则,每几月
      retptr  返回值(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
       若输入的指定日期是从开始日期起在若干个间隔月数后当日的日期则返回1
---------------------------------------------
名称:findtype4
原型:int findtype4(char *startptr,char *startdate,char *enddate,int month,
int weekday,char *retptr)
描述:此程序满足的循环规律为:每几月当周周几输入开始日期与间隔天数,
      检验输入的指定日期是否是从开始日期起一定时间范围内在若干个间隔月后指定
      当周周几的日期。
      startptr  开始日期字符
      startdate  范围起始时间
      enddate  范围结束时间
      month  循环规则,每几月
      weekday  循环规则,周几
      retptr  返回值(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔月后指定当周周几的日期则返回1
--------------------------------------
名称:findtype5
原型:int findtype5(char *startptr,char *startdate,char *enddate,int year,char *retptr)
描述:此程序满足的循环规律为:每几年当月当日输入开始日期与间隔年数,
      检验输入的指定日期是否是从开始日期起一定时间范围内在若干个间隔年数后当月当日的日期。
      startptr  开始日期字符
      startdate  范围起始时间
      enddate  范围结束时间
      year  循环规则,每几年
      retptr  返回值(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔年后当月当日的日期则返回1
--------------------------------------
名称:findtype6
原型:int findtype6(char *startptr,char *startdate,char *enddate,int year,int
weekday,char *retptr)
描述:此程序满足的循环规律为:每几年当月当日输入开始日期与间隔年数和当月当周周几,
      检验输入的指定日期是否是从开始日期起一定时间范围内在若干个间隔年数后当月当周
      指定周几的日期。
      startptr  开始日期字符
      startdate  范围起始时间
      enddate  范围结束时间
      year  循环规则,每几年
      weekday  循环规律,周几
      retptr  返回值(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔年数后当月当周指定周几的日期则返回1。
---------------------------------------------
名称:monthtype1
原型:int monthtype1(char *startptr,char *theptr,int day,char *retptr)
描述:此程序满足的循环规律为:每几天输入开始日期与间隔天数,
      检验输入的指定日期是否是从开始日期起在若干个间隔日期后的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      day  间隔天数
      retptr  包含符合要求指定日期字符串指针(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔天数后的日期则
             返回包含这些当月日期的字符串的长度。
------------------------------------------
名称:monthtype2
原型:int monthtype2(char *startptr,char *theptr,int week,char *weekday,char *retptr)
描述:此程序满足的循环规律为:每几周周***输入开始日期与间隔周数和星期几,
      检验输入的指定日期是否是从开始日期起在若干个间隔周数后指定星期几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      week  间隔周数
      weekday  指定的星期几
      retptr  包含符合要求指定日期字符串指针(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔周数后指定星期几的日期则返回
             包含这些当月日期的字符串的长度。
----------------------------------------------
名称:monthtype3
原型:int monthtype3(char *startptr,char *theptr,int month,char *retptr)
描述:此程序满足的循环规律为:每几月当日输入开始日期与间隔月数,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当日日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      month  间隔月数
      retptr  包含符合要求的日期字符串指针(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,若输入的指定日期是从开始日期起在若干个
             间隔月数后的当日日期则返回包含符合要求的当月日期的字符串的长度。
----------------------------------------
名称:monthtype4
原型:int monthtype4(char *startptr,char *theptr,int month,int weekday,char *retptr)
描述:此程序满足的循环规律为:每几月当周周几输入开始日期与间隔月数和当周周几,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当周指定周几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      month  间隔月数
      weekday  指定的当周的星期几
      retptr  包含符合要求的日期字符串指针(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔月数后的当周指定周几
              的日期则返回含有符合要求的当月日期的字符串长度。
-------------------------------------------
名称:monthtype5
原型:int monthtype5(char *startptr,char *theptr,int year,char *retptr)
描述:此程序满足的循环规律为:每几年当月当日输入开始日期与间隔年数,
      检验输入的指定日期是否是从开始日期起在若干个间隔年数后的当月当日的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      year  间隔年数
      retptr  含有符合要求的日期的字符串(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔年数后的当月当日的日期则
             返回含有符合要求的当月日期的字符串长度。
---------------------------------------------
名称:monthtype6
原型:monthtype6(char *startptr,char *theptr,int year,int weekday,char *retptr)
描述:此程序满足的循环规律为:每几年当月当周周几输入开始日期与间隔月数和周几,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当月当周指定周几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      month  间隔月数
      weekday  指定的当月当周的星期几
      retptr  含有符合要求的日期的字符串(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔年数后的当月当周指定周几的日期则返
              回含有符合要求的日期的字符串长度。
------------------------------------------
名称:weektype1
原型:int weektype1(char *startptr,char *theptr,int day,char *retptr)
描述:此程序满足的循环规律为:每几天输入开始日期与间隔天数,
      检验输入的指定日期是否是从开始日期起在若干个间隔天数后的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      day  间隔天数
      retptr  含有符合要求的日期的字符串指针(输出)
     返回值:如输入的指定日期不符合循环规律 则返回0,
             若输入的指定日期是从开始日期起在若干个间隔天数后的日期则返回
             包含这些符合要求的当周字符串的长度。
--------------------------------------------
名称: weektype2
原型:int weektype2(char *startptr,char *theptr,int week,char *weekday,char *retptr)
描述:此程序满足的循环规律为:每几周周***开始日期与间隔周数和星期几,
      检验输入的指定日期是否是从开始日期起在若干个间隔周数后指定星期几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      week  间隔周数
      weekday  指定的星期几
      retptr  含有符合要求的日期的字符串指针( 输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔周数后指定星期几
              的日期则返回包含这些当周指定日期字符串的长度。
--------------------------------------------
名称: weektype3
原型:int weektype3(char *startptr,char *theptr,int month,char *retptr)
描述:此程序满足的循环规律为:每几月当日输入开始日期与间隔月数,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当日日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr   指定日期字符串指针CCYYMMDD
      month   间隔月数
      retptr   含有符合要求的日期的字符串指针(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔月数后的当日日期则
              返回包含符合要求的当周日期的字符串的长度。
---------------------------------------------
名称:weektype4
原型:int weektype4(char *startptr,char *theptr,int month,int weekday,char *retptr)
描述:此程序满足的循环规律为:每几月当周周几输入开始日期与间隔月数和当周周几,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当周指定周几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      month  间隔月数
      weekday  指定的当周的星期几
      retptr  含有符合要求的日期的字符串指针(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔月数后的当周指定周几
              的日期则返回含有符合要求的当周日期的字符串长度。
-------------------------------------------
名称:weektype5
原型:int weektype5(char *startptr,char *theptr,int year,char *retptr)
描述:此程序满足的循环规律为:每几年当月当日输入开始日期与间隔年数,
      检验输入的指定日期是否是从开始日期起在若干个间隔年数后的当月当日的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      year  间隔年数
      retptr  含有符合要求的日期的字符串指针(输出)
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔年数后的当月
              当日的日期则返回含有符合要求的当周日期的字符串长度。
--------------------------------------------
名称:weektype6
原型:int weektype6(char *startptr,char *theptr,int year,int weekday,char *retptr)
描述:此程序满足的循环规律为:每几年当月当周周几输入开始日期与间隔月数和周几,
      检验输入的指定日期是否是从开始日期起在若干个间隔月数后的当月当周指定周几的日期。
      startptr  开始日期字符串指针CCYYMMDD
      theptr  指定日期字符串指针CCYYMMDD
      month  间隔月数
      weekday  指定的当月当周的星期几
      retptr  含有符合要求的日期的字符串指针
      返回值:如输入的指定日期不符合循环规律 则返回0,
              若输入的指定日期是从开始日期起在若干个间隔年数后的当月当
              周指定周几的日期则返回含有符合要求的当周日期的字符串长度。
--------------------------------------
名称:get_dayofweek
原型:int get_dayofweek (char *ptr)
描述:若输入的字符串为空则返回系统时间的当天为星期几,否则返回输入日期的当天是星期几。
      ptr     形如ccyymmdd格式字符串 or NULL--当前时间
      返回值:返回星期几
----------------------------------------------
名称:getmonth
原型:void getmonth(char *startptr,int month,char *retptr)
描述:计算某一日期加上若干个月后的新日期。
      startptr  形如ccyymmdd格式字符串
      month     月数
      retptr    新的日期(输出)
      返回值:无
--------------------------------------
名称:dump_d
原型:void dump_d( char *ptr )
描述:将字符串中的字符用整型显示
      ptr    输入的字符串
该函数在monthtypepub.c 中
----------------------------------------------
名称:Ifweekinptr
原型:ifweekinptr( int k, char *ptr )
描述:检验字符串中是否有指定的字符。
      k         输入的字符( 1-7 )
      ptr       输入的字符串
      返回值:若字符串中有指定的字符则返回1,否则返回0。
--------------------------------------
名称:getmon
原型:int getmon( char *theptr )
描述:返回输入日期所在周的周一与1800年1月1日的间相差的天数。
      theptr  输入的指定日期字符串
      返回值:返回输入日期所在周的周一与1800年1月1日的间相差的天数。
----------------------------------------
名称:getccyymmddfromdays
原型:void getccyymmddfromdays( int days, char *retptr )
描述: 根据与1800年1月1日的间相差的天数,计算出形为ccyymmdd的字符串
      days       与1800年1月1日的间相差的天数
      retptr     得到的形为ccyymmdd的字符串(输出)
      返回值:无
---------------------------------------
名称:set_ymd
原型:int set_ymd( int year,int mon,int day )
描述:设置系统时间的年月日。
       year       设定的年份
       mon        设定的月份
       day        设定的天
      返回值:若成功设定则返回 0
---------------------------------------
名称:set_hms
原型:int set_hms( int hour,int min,int sec )
描述:设置系统时间的分时秒
      hour       设定的小时
      min        设定的分钟
      sec        设定的秒
     返回值:若成功设定则返回 0
--------------------------------------

××××××××××××××××××××××××
×                                      ×
×    红外收发                           ×
×                                      ×
××××××××××××××××××××××××

--------------------------------------
说明:可以发送一个文件或接收一个文件,可收发的文件类型如下:
 1) .vcf 文件    符合vCard协议的名片文件
 2) .gnp文件  备忘录文件
 3) .vcs 文件  行程文件和待办事项文件
 4) .prg 文件    可执行程序文件
 5) .wzp文件  汇率文件
 6) .ebk文件  读书文件
发送文件的方法
 将所要发送的信息存为一文件,比如 /tmp/wl.vcf ,然后执行
 SwitchTo("/mwin/bin/irda_ap","/tmp/wl.vcf");
        即可,注意:/tmp/wl.vcf 最后会被 irda_ap 删除。

接收文件的方法
 按下 IrDA 键即可,若接收成功,则会根据所接收到的文件类型唤起相应的
 应用程序,所接收到的文件的全路径名作为第一个参数传給该应用程序。