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

📄 dialog.c

📁 这是一个支持"微型嵌入式 GUI" 的 SDK For Linux 版,其 GUI 核心可于 Linux, DOS 16/32 Bit, uC/OS-II及Windows 等平台工作,支持常用
💻 C
字号:
/*
Dialog - 对话窗口及 消息窗口(MessageBox) 
www.ecub2006.com
*/
#include "gui.h"  /* GUI 的头文件 */

void MyDlg(HAND hd,MESSAGE msg)/* 窗口的消息处理函数 */
{
if(msg.type == GM_SYSTEM)/* 判断消息类型,消息类型全部为大写  */
switch(msg.message)/* 判断消息 */
	{
	case GM_Create:/* 对象被创建后产生该消息,一般情况下,收到该消息时,
                对象还没有显示。可以在这里进行一些初始化工作。
				如果是窗口的GM_Create消息,可以创建新的对象,如 BUTTON 等 */
		{
			CreateObject(hd,LABEL,1,1,"窗口的消息处理函数",10,30,100,50,0,0);
		CreateObject(hd,BUTTON,1,1,"BUTTON_A",50,60,180,90,0,0);
	  /* CreateObject 函数原型如下
	  HAND GUIAPI CreatObject( - 函数返回新创建的对象句柄
	  HAND pHOST,  - 父对象句柄
	  int16 guiclass,  - 要创建的对象类型
	  int16 id, - 对象的 ID
	  int16 style, - 对象的风格 
	  char  *szTitle, - 对象的Title 标题
      int16 left,int16 top,int16 right,int16 bottom, - 对象的坐标
	  void (*Server)(HAND,MESSAGE),void *pData); -对象的消息处理函数,附加数据指针
	  */
	  
		CreateObject(hd,BUTTON,2,1,"BUTTON_B",50,100,180,130,0,0);
		}
		return;
	default:return;
	}
if(msg.type == GM_COMMAND)
	switch(msg.message)
	{
	case 1:/* BUTTON_A 的ID */
		{
		MessageBox(hd,"Command","BUTTON_A",0);
		/* MessageBox 函数原型如下
		uint32 MessageBox(HAND hd,char *title,char *string,uint32 type);
		- hd 为父对象的句柄,一般为主窗口或者对话窗口的句柄
		- title 消息窗口的标题
        - string 消息窗口中的内容
		- type 消息窗口的类型
        目前支持如下四种(也是最常用的:)
	    MB_OK   只有一个 OK(或 确定) 按钮
        MB_OKCANCEL 有OK(确定) 和 CANCEL(取消) 两个按钮 
        MB_YESNOCANCEL 有YES(是),NO(否),CANCEL(取消) 三个按钮
        MB_YESNO 有YES(是),NO(否) 两个按钮
		
		函数返回:
		IDOK 按下OK(确定)按钮 
		IDYES 按下YES(是)按钮
		IDNO 按下NO(否)按钮
		IDCANCEL 按下CANCEL(取消)按钮

		*/
		}
		return;/* BUTTON_B的ID */
	case 2:
		{
		MessageBox(hd,"Command","BUTTON_B",0);
		}
		return;
	default:return;
	}
}
void MyWin(HAND hd,MESSAGE msg)
{
if(msg.type == GM_SYSTEM)
switch(msg.message)
	{
	case GM_Create:
		{
		CreateObject(hd,BUTTON,1,1,"Dialog",50,50,180,80,0,0);
		CreateObject(hd,BUTTON,2,1,"MessageBox",50,100,180,130,0,0);
		}
		return;
     case GM_Close:
		{
		if(MessageBox(hd,"Message","确定要退出么?",MB_YESNO)==IDYES)
		QuitWindow(hd);/* 退出窗口 */
		return;
		}
	default:return;
	}
if(msg.type == GM_COMMAND)
	switch(msg.message)
	{
	case 1:/* 按钮 "Dialog" */
		{
		/* 启动一个对话窗口,参数与CreateObject基本相同,
		只却省 对象类别,因为类别已确定为:对话窗口 */
		efDialogWin->Start(hd,1,1,"Dialog",30,60,240,240,MyDlg,0);
		}
		return;
    case 2:/* 按钮 "MessageBox" */
		{
		MessageBox(hd,"Message","Hello,World!",0);
		}
	default:return;
	}
}

int gmain(void)
{
/* 窗口风格设置为 STY_WINDOW_CS 后,可以收到 GM_Close 消息,在确定是否退出 */
CreateObject(0,MAINWINDOW,1,STY_WINDOW_CS,"Dialog Test!",10,10,640,300,MyWin,0);
return 0;
}

⌨️ 快捷键说明

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