中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 100KB的DOS图形界面开发(Borland/DJGPP 库)
« [1] [2] [3] [4] [5] [6] [7] [8] »
作者:
标题: 100KB的DOS图形界面开发(Borland/DJGPP 库) 上一主题 | 下一主题
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 91 楼』:  增加JPEG图像支持

eCGUI下载中心:http://www.ecgui.com/html/ecgui/35.html

[ Last edited by ecurb2006 on 2008-10-25 at 23:32 ]



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-10-25 20:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 92 楼』:  JPEG图像显示例子


/*
Jpeg - JPG图像显示,及桌面背景的更换
Website:[url]www.ecgui.com[/url]
E-mail:ecgui.com@ecgui.com
*/
#include "gui.h" /* GUI 的头文件 */

void MyJPG(HAND hd,MESSAGE msg)
{
if(msg.type == GM_SYSTEM) /* 判断消息类型,消息类型全部为大写  */
switch(msg.message)      /* 判断消息 */
{
case GM_Draw:
         {
         HDC hdc;
         IMAGE img;/* Image 图像结构 */
         hdc=efGDI->Start(msg.pHOST);/* 获得  HDC 绘图句柄,开始绘图 */
         img.filename="logo.jpg"; /* 图像文件名 */
         img.type=IMAGE_TYPE_JPG;/* 文件类型*/
         img.hdc=hdc;/* 绘图句柄 */
         efImage->Load(&img);/* 初步读图像信息 */
         efImage->Show(&img,0,0);/* 显示图像 */
         efGDI->End(msg.pHOST,hdc); /* 释放 HDC 绘图句柄 */
         }
         return;
default:break;
}

}

void imgjpg_init(void); /*函数声明: 注册JPEG图像函数支持*/
HDC StartDesktopDraw(void); /* 函数声明:获得 桌面 HDC 绘图句柄,开始绘图 */
void EndDesktopDraw(HDC); /*函数声明: 释放桌面 HDC 绘图句柄 */

int gmain(void *data) /* GUI程序 的入口函数 */
{

        imgjpg_init();/* *注册JPEG图像函数支持*/
        {
        HDC hdc;/* HDC 绘图句柄 */
        IMAGE img; /* Image 图像结构 */
        hdc=StartDesktopDraw();/* 获得 桌面 HDC 绘图句柄,开始绘图 */
        img.filename="alizee.jpg"; /* 图像文件名 */
        img.type=IMAGE_TYPE_JPG; /* 文件类型*/
        img.hdc=hdc; /* 绘图句柄 */
        efImage->Load(&img); /* 初步读图信息 */
        efImage->Show(&img,0,0); /* 显示图像 */
        EndDesktopDraw(hdc); /* 释放桌面 HDC 绘图句柄 */
        }
        /* 创建一个主窗口 */
        CreatObject(0,MAINWINDOW,1,1,"JEPG Picture - Power by eCGUI-www.ecgui.com",5,10,510,570,MyJPG,data);
        return True;
}
/* ************** End of file **************** */
;编译
bcc -mh jpeg.c lib\gui.lib lib\libjpeg.lib
;最好再使用upx.exe 压缩一下,在开发包的_up 目录中有upx.exe
_up\upx -5 jpeg.exe

运行结果




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-10-25 23:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 93 楼』:  Unicode德文显示支持!

Unicode德文显示支持!德文比英文拉丁字母多出3个特殊字母. Ää Üü Öö

http://www.ecgui.com/bbs/thread-12-1-1.html

[ Last edited by ecurb2006 on 2008-10-27 at 09:20 ]



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-10-27 09:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 94 楼』:  

0.4 Beta- 对话窗口嵌套调用,多窗口切换支持

因为这些api接口,可能还要做一些改进。
有兴趣参与测试的朋友,可以发邮件到ecgui.com@gmail.com .可以先发给你。



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-11-9 11:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
crazii
新手上路





积分 16
发帖 8
注册 2008-9-6
状态 离线
『第 95 楼』:  

我打不开eCGUI的网站.
难道已经仙逝了....

2008-11-11 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 96 楼』:  

请从 http://ecurb2006.download.csdn.net/ 下载

尽快修复网站的问题。



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-11-11 15:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 97 楼』:  

eCGUI 0.3 for DOS-32bit
http://www.ecgui.com/download/ecgui4dos32.zip
版本特性:DJGPP编译。

========================================================
开发工具 ---------- 解压密码为 ecgui.com
DOS16位 : Borland C/C++  3.1 精简版本
连接:http://www.ecgui.com/download/tools/bc31.zip

DOS 32位 : DJGPP (内含 Allegro 图形库)
连接 : http://www.ecgui.com/download/tools/djgpp.zip



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-11-30 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 98 楼』:  


平铺式多窗口支持 (内测版)



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-12-1 07:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 99 楼』:  

CGUI微型嵌入式GUI   -QQ群   76249907



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-12-22 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 100 楼』:  eCFileMan文件管理器0.1版-Alpha



eCFileMan目标是成为一个基于eCGUI的图形文件管理器。能够在春DOS下运行,方便DOS下的文件管理操作。
目前还处于测试开发阶段。这里提供代码。目前仅实现了,文件列表现实。
代码分成两个文件:ecfm.c  list.c
/* ------------- ecfm.c - start */
/*
Copyright (C) 2008 ecGUI Developers
All rights reserved.
Website: [url]www.ecgui.com[/url]
Info: [email]ecgui.com@gmail.com[/email]
-- list.c ---
*/
#include "gui.h"
#include "list.c"


#define ITEM_NUM 6 /* 项目数*/

typedef struct _eCFMData
{
HAND urlbox[2];
}eCFMData,*PeCFMData;



eCFileMan Gecfm_buf;
PeCFileMan Gecfm=&Gecfm_buf;
char buf[256];
void eCFMWin(HAND hd,MESSAGE msg)
{
HAND box,button;/* 句柄 */
PMENU pm;
int i;
if(msg.type==GM_SYSTEM)
        switch(msg.message)
        {
        case GM_Create:
                CreateObject(hd,TEXTBOX,1,1,"",5,40,315,60,0,0);
                box=CreateObject(hd,SELBOX,1,1,"",5,65,315,400,0,0); /* 创建 选择框 对象 */
                #if 0
                pm=(PMENU)malloc(sizeof(MENU)*ITEM_NUM*2);
                for(i=0;i<12;i++)
                {
                pm->szTitle="a";
                efSelBox->Add(box,pm); /* 添加子项 */
                pm++;
                }
                #endif
                {
                PLIST pl=NULL;
        PFileList pfl;
                scandir(Gecfm,"");
                for(pl=Gecfm->pDirListHead;pl!=NULL;pl=pl->pNEXT)
                 {
                 pfl=(PFileList)pl->pData;
                 if(pfl->type==FT_DIR)
                 //printf("<%s>\n",pfl->name);
                 //sprintf(pfl->name,"<%s>",pfl->name);
                        {
                        sprintf(buf,"<%s>",pfl->name);
                        strcpy(pfl->name,buf);
                        pfl->item.szTitle=pfl->name;
                        efSelBox->Add(box,&(pfl->item));
                        }
                 }
               
                pl=Gecfm->pFileListHead;
                pl=pl->pNEXT->pNEXT;
                for(;pl!=NULL;pl=pl->pNEXT)
                {
                pfl=(PFileList)pl->pData;
                if(pfl->type==FT_FILE)
                {
                        //sprintf(buf,"<%s>",pfl->name);
                        //strcpy(pfl->name,buf);
                        pfl->item.szTitle=pfl->name;
                        efSelBox->Add(box,&(pfl->item));
                        }
                }
                for(pl=Gecfm->pDirListHead;pl!=NULL;pl=pl->pNEXT)
                {
                pfl=(PFileList)pl->pData;
                if(pfl->type==FT_FILE)
                {
                        //sprintf(buf,"<%s>",pfl->name);
                        //strcpy(pfl->name,buf);
                        pfl->item.szTitle=pfl->name;
                        efSelBox->Add(box,&(pfl->item));
                        }
                }
               
                }
                break;
        case GM_Draw:
                break;
        default:
                break;
        }
}
int gmain(void *data) /* GUI程序 的入口函数 */
{
/* 创建一个主窗口 */
        CreatObject(0,MAINWINDOW,1,1,"eCFileMan 0.1 Beta(081213)",0,0,640,480,eCFMWin,data);
        return True;
}




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-12-24 08:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 101 楼』:  


/* ********** list.c -start ***********/
/*
Copyright (C) 2008 ecGUI Developers
All rights reserved.
Website: www.ecgui.com
Info: ecgui.com@gmail.com
-- list.c ---
*/
#include <stdio.h>
#include <dir.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FT_FILE 0
#define FT_DIR 1


typedef struct _LIST{
void  *pData;
struct _LIST *pPRE;
struct _LIST *pNEXT;
}LIST,*PLIST;

PLIST addList(PLIST p,void *pData)
{
PLIST plnew=NULL,pl;
plnew=(PLIST)malloc(sizeof(LIST));
if(plnew==NULL) return NULL;
if(p==NULL)
{
plnew->pPRE=NULL;
plnew->pNEXT=NULL;
plnew->pData=pData;
return (plnew);
}
pl=p;
while(pl->pNEXT!=NULL) pl=pl->pNEXT;
plnew->pPRE=pl;
plnew->pNEXT=NULL;
plnew->pData=pData;
pl->pNEXT=plnew;
return(plnew);
}

PLIST insertList(PLIST pl,void *pData)
{
PLIST pn=NULL;

pn=(PLIST)malloc(sizeof(LIST));
if(pn==NULL) return NULL;
pn->pData=pData;
pn->pPRE=pl;
pn->pNEXT=NULL;
if(pl)
{
pn->pNEXT=pl->pNEXT;
pl->pNEXT=pn;

if(pl->pNEXT)
{
pl->pNEXT->pPRE=pn;
}
}
return pn;
}

PLIST delList(PLIST pl)
{
PLIST next=NULL;
if(pl == NULL) return 0;
next=pl->pNEXT;
if(pl->pNEXT)
(pl->pNEXT)->pPRE=pl->pPRE;
if(pl->pPRE)
(pl->pPRE)->pNEXT=pl->pNEXT;
free(pl);
pl=NULL;
return next;
}

typedef struct _FileList
{
int struct_size;
int type; /* 0 : File 1:Dir */
char name[256];
int size;

MENU item;
}FileList,*PFileList;


typedef struct _eCFileMan
{
PLIST pFileListHead;
PLIST pFileListTail;
PLIST pDirListHead;
PLIST pDirListTail;
}eCFileMan,*PeCFileMan;




void AddFile(PeCFileMan ecfm,int type,char *name,int size)
{
PFileList nf;
if(!ecfm) return;
nf=malloc(sizeof(FileList));
memset(nf,0,sizeof(FileList));
nf->struct_size=sizeof(FileList);
nf->type=type;
strcpy(nf->name,name);
nf->size=size;
if(type==FT_FILE)
        {
        if(!ecfm->pFileListHead)
        ecfm->pFileListTail=ecfm->pFileListHead=insertList(NULL,nf);
        else ecfm->pFileListTail=insertList(ecfm->pFileListTail,nf);
        }
else if(type == FT_DIR)
        {
        if(!ecfm->pDirListHead)
        ecfm->pDirListTail=ecfm->pDirListHead=insertList(NULL,nf);
        else ecfm->pDirListTail=insertList(ecfm->pDirListTail,nf);
        }
}

int scandir(PeCFileMan ecfm,char *dirname)
{
  DIR *dir;
  struct dirent *ent;
   int type;
  struct ffblk ffblk;
   int done;
   PLIST pl=NULL;
   PFileList pfl;
  //printf("First pass on '%s':\n",dirname);
  if ((dir = opendir(dirname)) == NULL)
  {
    //perror("Unable to open directory");
    //exit(1);
        return 0;
  }
  AddFile(ecfm,FT_DIR,"..",0);
  while ((ent = readdir(dir)) != NULL)
    {
//printf("%s\n",ent->d_name);
#if 1
          if(strstr(ent->d_name,"."))
                type=FT_FILE;
          else {type=FT_DIR; /* printf("\n-dir-\n"); */}
         
          AddFile(ecfm,type,ent->d_name,0);
#endif
        }

  /*
  printf("Second pass on '%s':\n",dirname);
  
  rewinddir(dir);
  while ((ent = readdir(dir)) != NULL)
    printf("%s ",ent->d_name);
  */
  if (closedir(dir) != 0);
   // perror("Unable to close directory");



  done = findfirst("*.",&ffblk,0);
   while (!done)
   {
      //printf("%s\n", ffblk.ff_name);
          for(pl=ecfm->pDirListHead;pl!=NULL;pl=pl->pNEXT)
           {
         
           pfl=(PFileList)pl->pData;
         
           //printf("%s = %s \n",pfl->name,ffblk.ff_name);
         
           if(strcmp(pfl->name,ffblk.ff_name)==0)
                   pfl->type=FT_FILE;
           //else printf("%s\n",pfl->name);
         
           }
      done = findnext(&ffblk);
   }
return 1;
}




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2008-12-24 08:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ynlc
新手上路





积分 6
发帖 3
注册 2008-12-15
状态 离线
『第 102 楼』:  

这个很不错呀。

2009-2-21 11:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zyl20028246
新手上路





积分 8
发帖 4
注册 2008-10-30
状态 离线
『第 103 楼』:  我想要

我想要一份,可否发我邮箱:zyl20028246@163.com 谢谢了。

2009-2-24 19:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 104 楼』:  

都可以从 网站上下载 呀 www.ecgui.com



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2009-2-25 21:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 105 楼』:  eCGUI 新版截图


控件全面支持皮肤功能



eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2009-4-4 10:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: