/*
Example_1 - 对话窗口,按钮,文本编辑框 综合应用
使用自定义数据,SetObjVar,GetObjVar进行对象之间的信息交互
www.ecub2006.com
*/
#include "gui.h"
typedef struct _MyWinData /* 自定义数据 */
{
char buf; /* 用保存文本框的内容 */
HAND dlg_button;/* 对话窗口的OK按钮句柄*/
HAND dlg_textbox;/* 对话窗口的文本框句柄*/
}MyWinData,*PMyWinData;
void MyDialog(HAND hd,MESSAGE msg) /* 对话窗口的消息处理函数 */
{
PMyWinData pWin;/* 自定义数据的指针 */
HAND hdd=GetObjHost(hd); /* 获得主窗口的句柄*/
pWin=GetObjVar(hdd);/* 获得自定义数据 */
if(!pWin) return; /* 错误返回 */
if(msg.type == GM_SYSTEM) /* 系统类消息*/
switch(msg.message)
{
case GM_Create:/* 创建文本框*/
pWin->dlg_textbox=CreateObject(hd,TEXTBOX,4,1,"",10,40,150,60,0,0);
/* 创建按钮 */
pWin->dlg_button=CreateObject(hd,BUTTON,5,1,"OK",70,70,170,90,0,0);
return;
case GM_Destroy:
return;
default:
return;
}
if(msg.type == GM_COMMAND)/* 按钮消息*/
switch(msg.message)
{
case 5:/* OK按钮 */
efTextBox->Text(pWin->dlg_textbox,pWin->buf);/* 复制文本内容到buf*/
efDialogWin->Quit(hd);/* 退出对话窗口 */
return;
default:
return;
}
}
void MyWin(HAND hd,MESSAGE msg)/* 主窗口消息处理函数 */
{
PMyWinData pWin;/* 自定义数据结构指针 */
if(msg.type == GM_SYSTEM) /* 系统类消息*/
switch(msg.message)
{
case GM_Create:
{
/* 分配内存空间 */
pWin=(PMyWinData)Gmalloc(sizeof(MyWinData),"");
SetObjVar(hd,pWin);/* 设定对象的自定义数据 */
/* 创建按钮 */
CreateObject(hd,BUTTON,1,1,"输入",10,40,110,65,0,0);
CreateObject(hd,BUTTON,2,1,"显示",10,70,110,95,0,0);
}
return;
case GM_Destroy:
{
pWin=GetObjVar(hd);/* 获得自定义数据 */
Gfree(pWin,sizeof(MyWinData));/* 释放内存空间 */
}
return;
default:
return;
}
pWin=GetObjVar(hd);/* 获得自定义数据 */
if(!pWin) return;
if(msg.type == GM_COMMAND)
switch(msg.message)
{
case 1:/* 启动一个对话窗口 */
efDialogWin->Start(hd,3,1,"输入-对话窗口",10,40,200,140,MyDialog,0);
return;
case 2:/* 消息窗口 */
MessageBox(hd,"信息",pWin->buf,MB_OK);
return;
default:
return;
}
}
int gmain(void *data)
{
/* 创建窗口 */
CreateObject(0,MAINWINDOW,1,1,"Ex1",10,10,630,300,MyWin,data);
return 0;
}