这么多大的CSDN,难道就没有人会开发DOS下的界面程序???

shoyour 2003-03-31 06:38:12
发了这么多天,想做个DOS下运行的界面的程序,难道就没有人会,大家应该见过无忧启动里的TW.exe吧,难道大家都是在WIN下开发的?
...全文
34 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjzghost 2003-04-09
  • 打赏
  • 举报
回复
这么不折磨死人,换换吧,我以前也是用C做界面开发的.不过不是在PC上应用的.老兄跟着时代走啊1
llj 2003-04-09
  • 打赏
  • 举报
回复
你的研究很有趣,是不是可以提供一点信息给我呢
lljseeyou.student@sina.com
allen1981813 2003-04-09
  • 打赏
  • 举报
回复
int GetResponse()
{
int key, subchoice[4] = {0, 0, 0, 0}, mainchoice = 0;
int initx = SPACE, inity[4] = {3, 3, 3, 3}, i = 0, width = 0, height = 0;
char *mainmenu[] = {" File", " Edit", " Search", " Help"};
char *submenu[][7] = {{" New", " Open", " Save", " save As", " Print", " Quit"},
{" Undo", " Redo", " Cut", " Copy", " Paste", " Date/Time"},
{" Search", " Search Again"},
{" Help", " About"}};
char far *ptr;

ShowMenu(initx, 1, mainmenu, 4, HOR, NOBORDER);
ActiveMenu(initx, 1, mainmenu, mainchoice, 1);
while(1)
{
key = bioskey(0);
ActiveMenu(initx, 1, mainmenu, mainchoice, 0);
switch(key)
{
case 0x2166:
initx = SPACE;
mainchoice = 0;
break;
case 0x1265:
mainchoice = 1;
initx = SPACE;
for (i = 0; i < mainchoice; i++)
initx += SPACE+strlen(mainmenu[i]);
break;
case 0x1f73:
mainchoice = 2;
initx = SPACE;
for (i = 0; i < mainchoice; i++)
initx += SPACE+strlen(mainmenu[i]);
break;
case 0x2368:
mainchoice =3 ;
initx = SPACE;
for (i = 0; i < mainchoice; i++)
initx += SPACE+strlen(mainmenu[i]);
break;
case 0x4b00:
if (mainchoice > 0)
{
mainchoice--;
initx = initx - strlen(mainmenu[mainchoice]) - SPACE;
}
else
{
i = 0;
initx = SPACE;
while(i < 3)
initx = initx + strlen(mainmenu[i++]) + SPACE;
mainchoice = 3;
}
break;
case 0x4d00:
if (mainchoice < 3)
{
initx += strlen(mainmenu[mainchoice]) + SPACE;
mainchoice ++;
}
else
{
mainchoice = 0;
initx = SPACE;
}
break;
case 0x011b:
ActiveMenu(initx, 1, mainmenu, mainchoice, 0);
return 0;
default :
break;
}
ActiveMenu(initx, 1, mainmenu, mainchoice, 1);
if (key == 0x2166 || key == 0x1265 || key ==0x1f73 || key == 0x2368 || key ==0x1c0d || key == 0x5000)
{
GetMaxWidthAndHeight(submenu[mainchoice], &width, &height);
ptr = SaveData(initx, 2, initx+width+3, 2+height+1);
ActiveMenu(initx, 1, mainmenu, mainchoice, 1);
ShowMenu(initx, 3, submenu[mainchoice], height, VAR, BORDER);
ActiveMenu(initx+2, inity[mainchoice], submenu[mainchoice], subchoice[mainchoice], 1);
while(key != 0x011b)
{
key = bioskey(0);
ActiveMenu(initx+2, inity[mainchoice], submenu[mainchoice], subchoice[mainchoice], 0);
switch(key)
{
case 0x316e:
inity[mainchoice] = 3;
subchoice[mainchoice] = 0;
break;
case 0x186f:
inity[mainchoice] = 3+1;
subchoice[mainchoice] = 1;
break;
case 0x1f73:
inity[mainchoice] = 3+2;
subchoice[mainchoice] = 2;
break;
case 0x1e61:
inity[mainchoice] = 3+3;
subchoice[mainchoice] = 3;
break;
case 0x1970:
inity[mainchoice] = 3+4;
subchoice[mainchoice] = 4;
break;
case 0x1071:
inity[mainchoice] = 3+5;
subchoice[mainchoice] = 5;
break;
case 0x4800:
if (subchoice[mainchoice] > 0)
{
subchoice[mainchoice]--;
inity[mainchoice]--;
}
else
{
subchoice[mainchoice] = height-1;
inity[mainchoice] = 3+height-1;
}
break;
case 0x5000:
if (subchoice[mainchoice] < height-1)
{
subchoice[mainchoice]++;
inity[mainchoice]++;
}
else
{
inity[mainchoice] = 3;
subchoice[mainchoice] = 0;
}
break;
case 0x4b00:
ActiveMenu(initx, 1, mainmenu, mainchoice, 0);
RestoreData(initx, 2, initx+width+3, 2+height+1, ptr);
if (mainchoice > 0)
{
mainchoice--;
initx = initx - strlen(mainmenu[mainchoice]) - SPACE;
}
else
{
i = 0;
initx = SPACE;
while(i < 3)
initx = initx + strlen(mainmenu[i++]) + SPACE;
mainchoice = 3;
}
GetMaxWidthAndHeight(submenu[mainchoice], &width, &height);
ptr = SaveData(initx, 2, initx+width+3, 2+height+1);
ActiveMenu(initx, 1, mainmenu, mainchoice, 1);
ShowMenu(initx, 3, submenu[mainchoice], height, VAR, BORDER);
break;
case 0x4d00:
ActiveMenu(initx, 1, mainmenu, mainchoice, 0);
RestoreData(initx, 2, initx+width+3, 2+height+1, ptr);
if (mainchoice < 3)
{
initx += strlen(mainmenu[mainchoice]) + SPACE;
mainchoice ++;
}
else
{
mainchoice = 0;
initx = SPACE;
}
ActiveMenu(initx, 1, mainmenu, mainchoice, 1);
GetMaxWidthAndHeight(submenu[mainchoice], &width, &height);
ptr = SaveData(initx, 2, initx+width+3, 2+height+1);
ShowMenu(initx, 3, submenu[mainchoice], height, VAR, BORDER);
break;
default :
break;
}
if (key == 0x316e || key == 0x186f || key == 0x1f73 || key == 0x1e61 || key == 0x1970 || key == 0x1071 || key == 0x1c0d)
{
RestoreData(initx, 2, initx+width+3, 2+height+1, ptr);
ActiveMenu(initx, 1, mainmenu, mainchoice, 0);
return mainchoice*10+subchoice[mainchoice];
}
ActiveMenu(initx+2, inity[mainchoice], submenu[mainchoice], subchoice[mainchoice], 1);
}
RestoreData(initx, 2, initx+width+3, 2+height+1, ptr);
}
}
}
void main()
{
int result;
Border(1, 2, 80, 25, BLUE, YELLOW);
while(1)
{
result = GetResponse();
switch(result)
{
case 0:
// NewFile(head, last);
break;
case 1:
// last = FileOpen(head, last);
break;
case 2:
// SaveFile(head);
break;
case 3:
// SaveFile(head);
break;
case 4:
// FilePrint(head);
case 5:
return ;
case 15:
// cprintf("Choice 15");
// GetCurDateAndTime();
break;
case 31:
// About();
break;
default :
break;
}
}
}
allen1981813 2003-04-09
  • 打赏
  • 举报
回复
/////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
///////////////////////////////////////////////////////////////////////
#define SPACE 3
#define HOR 2
#define VAR 3
#define BORDER 1
#define NOBORDER 0
#define MAXFILENAME 13
/////////////////////////////////////////////////////////////////////////
int Border(int startx, int starty, int endx, int endy, int bcolor, int fcolor)
{
int i = 0, x, y;
x = endx - startx;
y = endy - starty;
window(startx+1, starty+1, endx+2, endy+1);
textbackground(BLACK);
clrscr();
window(startx, starty, endx, endy);
textbackground(bcolor);
textcolor(fcolor);
clrscr();

gotoxy(2, 1);
putch(218);
gotoxy(2, y+1);
putch(192);
gotoxy(x, 1);
putch(191);
gotoxy(x, y+1);
putch(217);
for (i = 3; i < x; i++)
{
gotoxy(i, 1);
putch(196);
gotoxy(i, y+1);
putch(196);
}
for(i = 2; i < y+1; i++)
{
gotoxy(2, i);
putch(179);
gotoxy(x, i);
putch(179);
}
return 1;
}
int GetMaxWidthAndHeight(char **p, int *width, int *height)
{
int i = 0, maxw = 0, maxh = 0;
while(p[i])
{
if(maxw < strlen(p[i]))
maxw = strlen(p[i]);
i++;
maxh++;
}
*width = maxw;
*height = maxh;
return 1;
}
int ShowMenu(int x, int y, char **p, int count, int charmode, int borderflag)
{
int width = 0, height = 0, i = 0;
if (charmode == VAR)
{
GetMaxWidthAndHeight(p, &width, &height);
if (borderflag == BORDER)
{
Border(x, y-1, x+width+4, y+height, WHITE, BLACK);
while(i < count)
{
gotoxy(3, i+2);
cprintf("%s", p[i]);
i++;
}
}
}
else if(charmode == HOR)
{
window(1, 1, 80, 1);
textbackground(WHITE);
textcolor(BLACK);
clrscr();
while(i < count)
{
gotoxy(x, y);
cprintf("%s", p[i]);
x = x+strlen(p[i]) + SPACE;
i++;
}
}
return 1;
}
int ActiveMenu(int x, int y, char **p, int menu, int showflag)
{
int width = 0, height = 0;
if (y == 1)
width = strlen(p[menu]);
else
GetMaxWidthAndHeight(p, &width, &height);
window(x, y, x+width, y);
if(showflag == 1)
{
textbackground(GREEN);
textcolor(WHITE);
clrscr();
}
else
{
textbackground(WHITE);
textcolor(BLACK);
clrscr();
}
cprintf("%s", p[menu]);
return 1;
}

char far *SaveData(int startx, int starty, int endx, int endy)
{
char far *p1, far *p;
int i = 0, j = 0, k = 0;
p = (char far *)malloc(sizeof(char)*(endx-startx+4)*(endy-starty+2)*2);
for (i = starty-1; i < endy+1; i++)
for (j = startx-1; j < endx+3; j++)
{
p1 = (char far *)MK_FP(0xb800, j*2+i*160);
p[k++] = *p1++;
p[k++] = *p1;
}
return p;
}

int RestoreData(int startx, int starty, int endx, int endy, char far *p)
{
char far *p1;
int i = 0, j = 0, k = 0;
for (i = starty-1; i < endy+1; i++)
for (j = startx-1; j < endx+3; j++)
{
p1 = (char far *)MK_FP(0xb800, j*2+i*160);
*p1++ = p[k++];
*p1 = p[k++];
}
return 1;
}
Snoopy2 2003-04-09
  • 打赏
  • 举报
回复
http://class.online.sh.cn/showphoto.php?picid=85317

这个界面怎么样?lol
98440622 2003-04-09
  • 打赏
  • 举报
回复
我在dos下写过一个全屏文本编辑器,可是现在没用了!当时可是花了我不少时间的,不过回想起来还是很陶醉的,毕竟如果没有wps我就可以成立一个“金山”公司了!事过境迁:)
Snoopy2 2003-04-08
  • 打赏
  • 举报
回复
Open your source then
cutestar 2003-04-05
  • 打赏
  • 举报
回复
我在DOS下也做过很长一段时间,如果有问题,我很乐意帮忙!!!
UP AND DOWN
chujidiy 2003-04-05
  • 打赏
  • 举报
回复
什么,看我能否帮上忙
叶帆 2003-04-04
  • 打赏
  • 举报
回复
我有大学答辩时的论文,用从C++开发的DOS下的界面,需要请回话!
power4 2003-04-03
  • 打赏
  • 举报
回复
楼主这个问题解决了么?我作嵌入式开发的,包括文件系统和gui,主要在我们自己的系统上面,

我在杭州,如果可以合作的话,我可以帮您解决这个问题。

email:emzilpower@163.com
Robin 2003-04-03
  • 打赏
  • 举报
回复
上个世纪八十年代出生当然很少用了!
你的找七十年代的前辈!
complexity 2003-04-01
  • 打赏
  • 举报
回复
这年头了,还有人研究dos,真是晕倒!
Snoopy2 2003-04-01
  • 打赏
  • 举报
回复
jasonyang.web1000.com
自己找
「已注销」 2003-04-01
  • 打赏
  • 举报
回复
我三年来一直在DOS下编程的,因为工作的需要,我们是做工业自动化方面的CAM软件,所以只能在DOS下编程。我的资料中:有DOS下中文显示程序,DOS下鼠标程序,DOS下绘图程序,反正很多,我需要整理,如果需要的话,我可以提供一部分。
请EMAIL:linzhixiao@vip.163.com
然后请说明一下,你具体需要哪些程序。
shoyour 2003-03-31
  • 打赏
  • 举报
回复
你现在有源代码吗?
dfdscx 2003-03-31
  • 打赏
  • 举报
回复
我曾经做过一个,那时不知道在dos下显示汉字可以用ucdos的字库。我是在windows下把药显示的汉字描点描下来,一个汉字是一个数组。画死我了,到最后快完成时,有位达人告诉我可以用字库时。差点撞墙。555555555555555555555
首先说明该文件有安装包和完整的代码。打开运行时需要添加(或者更新)Visio。如果电脑没有visio可以装一个。下载绝对超值。 本项目通过用C#进行Visio进行二次开发,实现了绘制电气接线图, 并能实现潮流计算。 0 前言 中国电力行业属于垄断行业。从目前来看,改革我国电力行业,打破垄断引入竞争已成为大势所趋,但是,电力行业与其他垄断行业不同,至少有三个特点: 电力行业与其他垄断行业服务对象不同。其他垄断行业服务对象都是部分群体,如民航、铁路它们的服务对象只是人们群众中的一部分,不像电力行业与所有人有关,不论城市或农村,不论生产或生活,不论信息传递或网络联系,家庭生活都离不开电,对社会是全方位的覆盖。一个国家电气化水平越高,电力在全社会作用越大。一旦发生问题,小则引起局部瘫痪,大则引起全社会瘫痪。因为它既是国民经济中的骨干行业,又是全社会的吃穿住行和人们生活需要的公用产品,这是其他垄断行业无法比拟的。 电力行业另一个特点是它的产品不能储存,发电量超过需要量会形成浪费,发电量不足,会影响生产和生活的需要。而且,社会对电量的需要是一个不定量,它会随着地区、时间、季节、气候、人们生活等方面的变化而变化。这种不能储备,需要量又是瞬息万变的行业,就要求对供给和需求要有精确的掌握,以便及时进行调整和控制,才不至于出现象美国加州那样长期电力危机。 中国电力行业还有它自己的特点。中国电力行业的垄断说到底是非经济型的行政性的垄断,情况非常复杂,这在国外也少见。在所有制上,有国家所有制、地方政府所有制、合资企业、集体所有制,国家担保贷款企业、股份制,等等。发电厂有火电、水电、核电。区域电价上差别也相当大。电网有国家投资,地方政府投资,企事业单位投资等等。在进行厂网分开竞价上网过程中,必须对电力企业的产权有所界定,对不同电价有所处理,以及今后电价的监督,等等问题,都需要政府介入。 但是,电力行业不可能彻底打破垄断,完全自由竞争,这是电力行业的特点决定的,即便在西方市场经济条件下,所有的竞争也不是完全的自由竞争(美国的电力自由化程度也不高,相对来说欧洲电力市场的自由最高,但也没有完全市场化),只能是有限的竞争。何况在我们这样大的一个国家,电力行业这么重要,政府不可能放手不管完全自由竞争,问题在于垄断和竞争的度如何掌握,二者如何结合,这是我们电力行业面临的挑战。 电力行业已经开始从生产导向型向市场导向型的巨大转变。电力行业运作继续关注在电厂和电网方面,并面临提高运行可靠性的强烈需求。当今,我们需要用崭新的视角来透视市场状况,一些术语,如竞争能力、产品 质量、收益率、效率及客户服务等都已经被赋予了全新的理念。只有清楚地分析、理解当前的形势并及时、勇敢地采取行动,才能应对这些挑战。 在21世纪,计算机显得越来越重要,在电力行业中,计算机也得到了 越来越广泛的运用。而且随着社会的进步,电力行业已经抛弃了手工绘制电气接线图和手工计算潮流。 本系统就是在基于以上原因,开发了一款利用Visio进行二次开发,将C#与Visio想结合,能绘制电气接线图,并能打开已有的电气接线,保存所绘制的接线图等功能,并能在接线图的基础上,进行潮流计算。 1 绪论 1.1 课题的研究背景与意义 1.1.1 课题的研究背景 随着国民经济的发展,我国电力系统的规模越来越庞大,其网络结构越来越复杂,因而电力系统基础分析计算的工作量也越来越大。图形是工程中最简洁的语言,用图形来描述电力系统的网络结构,图形会起到一目了然的作用,这也逐渐成为用户对电力系统分析计算软件的基本要求。光只能绘图并不能满足需求,将绘制接线图与潮流计算结合起来才能使软件更贴近需求。 Microsoft Visio是当今优秀的绘图软件,也是近年国内外最流行的图形化解决方案开发平台之一,具有强大的图形操作功能,它还提供了二次开发功能。能够建立电力系统计算软件的图形平台框架,在此平台上绘制和编辑基于电力系统电气接线图,对电网拓扑结构进行自动识别,完成了电力网络图形元件各参数输入和设置,并实现了电力网络操作的图形化模拟、仿真和潮流计算。 1.1.2 课题的研究意义 本项目实现的电气接线图的绘制和潮流计算。Visio是当今最优秀的绘图软件之一,它将强大的功能和易用性完美结合,可广泛应用于电子、机械、通信、建筑、软件设计和企业管理等众多领域。使用该软件可以完成各类专业图纸的制作,例如程序流程图、网络拓扑图、数据分布图、地图、室内布置图、规划图、线路图等,可见功能十分的强大。Visio软件有助于学生以及各种专业人员轻松地可视化、分析和交流复杂信息。这能够将难以理解的复杂文本和表格转换为一目了然的Visio图表,增加工作学习的效率。 1.2 问题的定义及内容简介 1.2.1 问题的定义 本系统是为了电力公司运行管理设计的。实现系统的准备工作如下: 1、搜集和查阅电力公司的相关资料、信息,调研、分析对项目开发有益的相关网站和软件系统; 2、学习和掌握VS2005技术,建立合适的开发环境; 3、综合运用所学专业知识,完成系统的总体设计和详细设计; 4、系统要完成的主要功能包括: (1) 通过VS2005对Visio控制绘图过程,处理图形元素。 (2) 使用VS2005建立并能在绘制的接线图基础上进行潮流计算。 (3) 系统可以对绘制的图另存为,并能将潮流计算结果保存到TXT文本中,方便以后查看。 1.2.2 问题的内容简介 本系统主要实现绘制接线图和潮流计算。 1、绘制接线图:在C#中调用Visio控件,并能将绘制电力系统图的相关Visio控件调用到该项目中,能绘制、打开、另存为。 2、潮流计算:因为网络节点不一定,故该功能先确定网络节点,并确定PQ节点个数,在依次录入线路参数和节点数据,最好进行计算。 1.3 问题的调研 在本系统开发之初,为了做好系统需求分析工作,我做了充分的调研,从而认识到完成本系统需做到以下几点: 1、对VISIO二次开发的可行性与价值进行充分的考查和调研。 2、了解在电力公司运行管理系统的需求和现状。 3、熟悉VS开发环境,熟练掌握C#操作TXT,掌握C#的编程语言。 4、系统具体运行环境及配置要求再做详细调查研究并与指导老师面谈。 在充分了解、调查情况的基础上,本人开发了这一项目。 2 可行性分析 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。 系统的可行性分析主要包括经济上的可行性,技术上的可行性和操作上的可行性。本系统的可行性分析如下: 2.1 经济可行性 本系统作为信息与电气工程学院的创新项目,开发所需要投入的人力物力资源并不是很大。人力方面只需开发人员本人经过几个月的时间进行分析设计与实现,而在软硬件方面只需一台计算机和相关的软件即可。在整个开发过程中充分考虑了各个模块之间的独立性和可维护性,开发成本和运行成本以及维护成本都比较低。所以在经济上本系统的开发是可行的。 2.2 技术可行性 本系统的开发环境是微软的Visual Studio 2005开发系统,使用的语言是C#语言,运用TXT作为数据库。Visual Studio 2005是建立在公共语言运行库上的编程框架,是一个集成开发环境,其支持的语言有二十几种。所以利用这项成熟的技术开发这个系统在技术上是可行的。 2.3 操作可行性 本系统是基于Visio的二次开发,用户无需经过专业的培训即可以完成系统的安装操作及使用,运行十分的方便。所以在操作上本系统是可行的。 3 系统设计 3.1 系统总体功能结构 根据此系统所需要实现的功能,我们将该系统设计成主要两部分。设计了如下图所示的系统结构: 图3.1 系统结构图 3.2 系统数据库 鉴于本级软件主要考察的不是数据库,故此次设计我主要用于了TXT来保存结果。系统默认的数据库在安装文件夹下,名为data.txt的文本文件里。 txt文件是微软在操作系统上附带的一种文本格式,是最常见的一种文件格式 ,早在DOS时代应用就很多,主要存文本信息,即为文字信息,在微软在操作系统等于直接存,就是它了,现在多用的操作系统得使用记事本等程序保存,大多数软件可以查看如记事本,浏览器等等。 5 系统评价 5.1 系统特色/优点介绍 本系统是在做了许多考查和调研的基础上编写制作的,从界面设计到系统设置都是从方便用户的角度出发,系统具有以下几点特色: 1、 在调查和了解了网络教学的基本需求与应用现状的前提下设计开发了此程序,切合实际,具有较强的实用性。 2、本系统不需要通过网络即可运行,系统运行要求较低。并且系统可以在多种操作系统平台上(Windows NT/Windows 2000/Windows XP)运行。数据库采用TXT文本,移植性很强。。 3、 在重要的Visio画图板块,可以通过增加相应VSS模具的形式任意增加Visio画图的类型,十分方便。 5、 及时全面地处理各种错误异常,在潮流计算时有错误提醒机制,避免用户输入错误。 6、采用TXT作为数据库,便于移植,且操作快捷方便。 7、用户界面比较友好,操作简单,使用方便。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧