微型嵌入式GUI-应用开发-TEXTBOX

本文演示了如何使用微型嵌入式GUI在窗口中创建并利用文本框(TEXTBOX)对象进行输入展示。通过具体代码示例介绍了文本框的创建、获取及设置文本内容的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
微型嵌入式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;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值