/*
微型嵌入式GUI - 应用开发
Website: www.ecurb2006.com
演示如何创建对象,使用TEXTBOX文本框。
*/
#include "gui.h"
#define MyWinCommand_A 4 /* 按钮的ID*/
#define MyWinCommand_B 5
/* 私有数据,可以用来保存对象的句柄 */
/* 句柄实质是结构(struct)指针 */
typedef struct _MyWinData
{
HAND a;
HAND b;
HAND c;
}MyWinData,*PMyWinData;
/*
USER_PRO 为简单的宏定义
#define USER_PRO void
表明为对象消息处理函数
HAND 为对象句柄
MEEAGE 为消息结构
更多请查阅 微型嵌入式GUI 编程指南( http://www.ecurb2006.com)
*/
USER_PRO MyMainWin(HAND hd,MESSAGE msg)
{
if(msg.type == GM_SYSTEM)/* 先判断消息类型 */
switch(msg.message)
{
case GM_Draw:/* 对象显示(或重绘)时,产生这个消息*/
{
HDC hdc; /* HDC 为图形设备句柄 */
PefGDITag g=efGDI;
/*
efGDI为作图类, ef类操作方法之一,
整个GUI中对象类都采用了这种API封装方法,接口统一,简单易用
*/
hdc=g->Start(hd);/* 开始作图 */
g->SetColor(hdc,COLOR_BLACK); /* 设定颜色 */
g->DrawText(hdc,5,50,"Input a");/* 输出文字 */
g->DrawText(hdc,5,75,"Input b");
g->DrawText(hdc,5,100,"Show");
g->End(hd,hdc); /* 结束作图 */
}
return;
case GM_Create: /* 对象创建后产生的消息 ,可以在这里完成一些初始化操作 */
{
PMyWinData mydata=NULL;
mydata=(PMyWinData)Gmalloc(sizeof(MyWinData),"");/* 分配内存 */
if(!mydata) return; /* return NULL */
mydata->a=CreateObject(hd,TEXTBOX,1,0,"",70,50,200,70,0,0);
mydata->b=CreateObject(hd,TEXTBOX,2,0,"",70,75,200,95,0,0);
mydata->c=CreateObject(hd,TEXTBOX,3,0,"",70,100,200,120,0,0);
CreateObject(hd,BUTTON,MyWinCommand_A,0,"Show A",10,130,90,155,0,0);
CreateObject(hd,BUTTON,MyWinCommand_B,0,"Show B",100,130,180,155,0,0);
SetObjVar(hd,(HAND)mydata);/* 设定对象的私有数据指针 */
}
return;
case GM_Destroy:
{
PMyWinData mydata=NULL;
mydata=(PMyWinData)GetObjVar(hd);/* Get Object Var */
Gfree(mydata,sizeof(MyWinData));
}
return;
default:return;
}
if(msg.type == GM_COMMAND)
{
char strbuf[257];
PMyWinData mydata=NULL;
mydata=(PMyWinData)GetObjVar(hd);/* 获得对象的私有数据指针 */
if(!mydata) return;
memset(strbuf,0,257);
switch(msg.message)
{
case MyWinCommand_A:
efTextBox->Text(mydata->a,strbuf);/* 获得文本框内容*/
efTextBox->Set(mydata->c,strbuf);/* 设定文本框内容 */
return;
case MyWinCommand_B:
efTextBox->Text(mydata->b,strbuf);
efTextBox->Set(mydata->c,strbuf);
return;
default:return;
}
}
}
int gmain(void*data) /* GUI 应用程序的入口,相当于 main 函数 */
{
CreateObject(0,MAINWINDOW,1,1,"Hello,World",10,10,400,400,MyMainWin,data);/* 创建对象 */
return 0;
}
微型嵌入式GUI - 应用开发
Website: www.ecurb2006.com
演示如何创建对象,使用TEXTBOX文本框。
*/
#include "gui.h"
#define MyWinCommand_A 4 /* 按钮的ID*/
#define MyWinCommand_B 5
/* 私有数据,可以用来保存对象的句柄 */
/* 句柄实质是结构(struct)指针 */
typedef struct _MyWinData
{
HAND a;
HAND b;
HAND c;
}MyWinData,*PMyWinData;
/*
USER_PRO 为简单的宏定义
#define USER_PRO void
表明为对象消息处理函数
HAND 为对象句柄
MEEAGE 为消息结构
更多请查阅 微型嵌入式GUI 编程指南( http://www.ecurb2006.com)
*/
USER_PRO MyMainWin(HAND hd,MESSAGE msg)
{
if(msg.type == GM_SYSTEM)/* 先判断消息类型 */
switch(msg.message)
{
case GM_Draw:/* 对象显示(或重绘)时,产生这个消息*/
{
HDC hdc; /* HDC 为图形设备句柄 */
PefGDITag g=efGDI;
/*
efGDI为作图类, ef类操作方法之一,
整个GUI中对象类都采用了这种API封装方法,接口统一,简单易用
*/
hdc=g->Start(hd);/* 开始作图 */
g->SetColor(hdc,COLOR_BLACK); /* 设定颜色 */
g->DrawText(hdc,5,50,"Input a");/* 输出文字 */
g->DrawText(hdc,5,75,"Input b");
g->DrawText(hdc,5,100,"Show");
g->End(hd,hdc); /* 结束作图 */
}
return;
case GM_Create: /* 对象创建后产生的消息 ,可以在这里完成一些初始化操作 */
{
PMyWinData mydata=NULL;
mydata=(PMyWinData)Gmalloc(sizeof(MyWinData),"");/* 分配内存 */
if(!mydata) return; /* return NULL */
mydata->a=CreateObject(hd,TEXTBOX,1,0,"",70,50,200,70,0,0);
mydata->b=CreateObject(hd,TEXTBOX,2,0,"",70,75,200,95,0,0);
mydata->c=CreateObject(hd,TEXTBOX,3,0,"",70,100,200,120,0,0);
CreateObject(hd,BUTTON,MyWinCommand_A,0,"Show A",10,130,90,155,0,0);
CreateObject(hd,BUTTON,MyWinCommand_B,0,"Show B",100,130,180,155,0,0);
SetObjVar(hd,(HAND)mydata);/* 设定对象的私有数据指针 */
}
return;
case GM_Destroy:
{
PMyWinData mydata=NULL;
mydata=(PMyWinData)GetObjVar(hd);/* Get Object Var */
Gfree(mydata,sizeof(MyWinData));
}
return;
default:return;
}
if(msg.type == GM_COMMAND)
{
char strbuf[257];
PMyWinData mydata=NULL;
mydata=(PMyWinData)GetObjVar(hd);/* 获得对象的私有数据指针 */
if(!mydata) return;
memset(strbuf,0,257);
switch(msg.message)
{
case MyWinCommand_A:
efTextBox->Text(mydata->a,strbuf);/* 获得文本框内容*/
efTextBox->Set(mydata->c,strbuf);/* 设定文本框内容 */
return;
case MyWinCommand_B:
efTextBox->Text(mydata->b,strbuf);
efTextBox->Set(mydata->c,strbuf);
return;
default:return;
}
}
}
int gmain(void*data) /* GUI 应用程序的入口,相当于 main 函数 */
{
CreateObject(0,MAINWINDOW,1,1,"Hello,World",10,10,400,400,MyMainWin,data);/* 创建对象 */
return 0;
}