ucgui编程(一)

转自:http://blog.sina.com.cn/s/blog_724d24bf0100v7cj.html


ucgui中编程时的一些问题

  1. 用户自己创建按钮ID时应该使用的模式:#define BUTTON_ID_MENULIST (GUI_ID_USER+102) //其中GUI_ID_USER一般在GUI.H中有定义,“102”为自己书写。这样有助于和系统的分开。
  2. 对于对话框的理解:个人观点认为一个对话框相当于我们看书时翻的那一些页,例如此时我们看的是第一页,那么这第一页就能相当于一个对话框,它其中还可以包括其他的控件,然后我们阅读第二页,这个第二页就是另一个对话框,又可以包含其他的控件,以此类推,一般系统编写时我们需要看到几个页面就需要几个对话框
  3. 回调函数的使用:使用回调函数可以方便对于窗口的更新,当我们改变了窗口中某一个控件的值时可以使用回调函数对此窗体进行重绘WM_PAINT,如果我们不使用回调函数,那么窗口的更新就是编程者自身的责任。
  4. 创建控件时(通常是在全局变量定义中定义对话框时进行)一般使用控件通用函数<widget>_CreateIndirect() 原型为:<widget>_CreateIndirect(constGUI_WIDGET_CREATE_INFO *pCreateInfo,WM_HWIN hParaent,int x0,inty0,WM_CALLBACK*cb);                            如:我们假使定义一个对话如下:static constGUI_WIDGET_CREATE_INFO  _aBuild[]={{WINDOW_CreateIndirect,"",0,0,0,320*5,190,0},{TEXT_CreateIndirect,"欢迎使用本系统",0,(320*0+100),8,180,25,0},{EDIT_CreateIndirect,"",GUI_ID_EDIT1,(320*0+160),90,60,20,0}......};说明:加红色部分为控件定义时的基本形式
  5. 在ucgui中我们编写程序时,总是会有一些在全局变量定义时就指定在某一位置显示的内容,他是以文本框的形式输出的,相应的会有一些是在运行程序时由键盘输入的输入形式为编辑框

ucgui编程的一般顺序:

  1. 头文件定义

    一般情况下包含的头文件有:

    一般头文件:

    #include<stdlib.h>   //杂项函数的定义以及申请动态内存时需要

     #include<time.h>     //使用时间函数时需要

    #include<string.h>   //字符串处理函数

    #include<GUI.H>      //图形界面函数,是编程必须的

    #include<math.h>     //常用数学函数

    #include<windows.h>   //在c++中进行仿真时需要此函数其中包括函数的调用,资料的结构和常数的识别字

     #include <iostream>   //c++中基本输入输出函数头文件   

     常用控件头文件:

    #include<EDIT.H>     //编辑框头文件

    #include<BUTTON.H>   //按钮头文件

    #include<TEXT.H>     //文本头文件

    #include<DIALOG.H>   //对话框头文件

    #include<FrameWin.h> //框架头文件

    #include<Scollbar.h> //滚动条头文件

    除以上我们编程时经常用到的头文件外,我们还需要定义视窗头文件

    #ifndef WM_H

    #includeWM.H         //视窗管理器头文件

    #endif

  2.创建用户ID:一般情况下编写的系统程序中必然会用到按钮,那么头文件定义完毕后,我们所需要做的就是为我们在程序中锁定义的安尼亚设置唯一的一个ID号,让系统能够知道到底是哪一个按钮在起作用。按钮定义时需要注意一些问题。可以参见上述论中的“ucgui中编程时的一些问题”。

  3.全局变量的定义:一般情况下全局变量的定义包括如下

    定义句柄  形式为:staticWM_HWIN   ***

   (句柄象征着某一个指定的窗口,它是该类窗口唯一的标识符,用于在后续程序中对该类窗体进一步的操作执行,一般情况下一个控件对应于一个句柄,在一类句柄中如果多余一个可以用一个数组进行表示,如想要定义四个对话框,那么一个对话框就需要定义一个句柄,同属于对话框就为一类,句柄可按照如下形式定义static WM_HWIN  _hDialog[4]

   当编程者在编程时如果想要使用自己定义的一些字体那么在全局变量中就必须定义这些字体 

   定义其他相关的数值:例如中间的存储量,多个值时的数组等

   对话框的定义形式为:static  const GUI_WIDGET_CREATE_INFO  **[] = {*******}

  (对话框定义时,主要定义对话框显示的字符信息,包括字符信息的位置大小等)  

  4.函数定义

   函数一般包括为以下几类:

   主函数MainTask()

   主函数的编写一般分为以下几步:

   A:GUI_Init();

      GUI_Clear();

   B:初始化用户用于存储信息的数组

   C:设置控件的默认值

     设置文本控件的字体:TEXT_SetDefaultFont(&GUI_FontHZ_Song_12);//这里的字体为用户自定义的, 非UCGUI所有

      设置编辑框的默认字体:EDIT_SetDefaultFont(&GUI_Font16_ASCII);

     设置滚动条的默认宽度:SCROLLBAR_SetDefaultWidth(16);

     设置框架的默认字体:FRAMEWIN_SetDefaultFont(&GUI_FontHZ_Song_16);

      设置创建新的窗口时使用的默认标志:WM_SetCreateFlags(WM_CF_MEMDEV);//在所有窗口上使用存储设备

     激活存储设备:WM_EnableMemdev(WM_HBKWIN);//WM_HBMWIN为背景窗口的句柄

     设置视窗背景颜色:WM_SetBkWindowColor(GUI_BLACK);//此时你所看到的整个屏幕的背景颜色为黑色

      

     创建框架:定义形式为 句柄=FRAMEWIN_Create("框架上显示的标题名称"0,WM_CF_SHOW,0,0,320,240);

     设置框架标题栏的背景颜色:FRAMEWIN_SetBarColor(句柄名称,0,GUI_BLUE);

     设置框架文本对齐方式:FRAMEWIN_SetTextAlign(句柄名称,GUI_TA_HCENTER);

     

     D:创建客户区

      必须有的一句话:框架句柄= WM_GetClientWindow(框架句柄);//如果去掉这句话策划那个徐运行时不会显示框架

      如果当前窗口还包括子窗口则要以子窗口的形式创建窗口,以当前窗口的句柄为子窗口的父句柄。形式如下:子窗口句柄(可有可无)= WM_CreateWindowAsChild(0,190,320,25,父窗口句柄,WM_CF_SHOW,回调函数,0);

      E:滚动条创建(如果有的话)

     滚动条句柄 = SCROLLBAR_CreateAttached(依附的窗体的句柄,0);

     设置滚动条的条目数量,设置最大值。形式:SCROLLBAR_SetNumTtems(滚动条句柄,最大值(320*5));

     设置页尺寸(滚动条移动一次窗体的移动宽度):SCROLLBAR_SetPageSize(滚动条句柄,也尺寸(320));

     隐藏滚动条:形式: WM_HideWindow(滚动条句柄);

     

   回调函数

   其它函数(初始化数组函数,整数转化为字符串函数等)

   收尾语句

   while(1)

    {

     执行回调函数重绘无效窗口。形式:WM_EXEC();

     延时函数:GUI_Delay(2000);

    }


version : 3.1.0.0 1、修改了选择不同窗体属性窗口不更新的BUG; 2、修改了只能打开一个ucGUIBuilder的功能,现在可以同时启动多个; 3、修复了拖放非ucfrm引起软件错误的Bug; 4、添加了控件ID自动增加功能; 5、添加了控件ID检查功能,控件ID有重复时会有警告; 6、添加了用户自定义字体功能; 7、支持中英文切换(但功能不够完善); 8、支持自动检查更新; 9、修改了不能保存用户自定义ID的BUG; version : 1.0.0.0 功能很不完善; 还有好多BUG; 目前只能生成资源表; 暂时不能生成其他代码; version : 2.0.0.5 优化了控件库; 修复了一些Bug; 可以生成完整的C文件(包括 资源表,初始化代码等); 修改了部分功能; version : 2.1.0.5 优化了控件库; 修复了一些Bug; 代码生成窗口中添加了C语言语法高亮显示功能; C文件模板做了部分修改; 支持设计的窗体保存为文件,并可以打开; 对所有控件属性添加了Description(在属性窗口最下面显示); 窗体布局可以保存,可以自定义为自己喜欢的窗体布局; 修改了部分功能; version : 3.0.0.0 重写了部分内核,运行更稳定; 支持窗体设计器的复制、粘贴、剪切、删除、撤销、等基本操作; 支持多控件,对齐、公共属性修改等基本操作; 支持将.ucfrm文件与ucGUIBuilder关联功能; 支持控件自定义ID; 添加了窗体预览功能; 添加了对控件事件的支持; 添加了在线检查更新功能; 等……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值