⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textbox.c

📁 这是一个"微型嵌入式 GUI" 的应用开发例子 (含源代码),其 GUI 核心可于 Linux, DOS 16/32 Bit, uC/OS-II及Windows 等平台工作,支持常用控件有:M
💻 C
字号:
/*

微型嵌入式GUI - 应用开发

Website: www.ecurb2006.com

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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -