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

📄 demo.cpp

📁 飞虹 vision仿windows开发
💻 CPP
字号:
#include"include\app.h"
#include"include\mapp.h"
#include"include\mbutton.h"
#include"include\mlistite.h"
#include"include\mdia.h"
#include"include\mbar.h"
#include"include\mclock.h"
#include"include\mcheck.h"
#include"include\mradio.h"
#include"include\mstaticb.h"
#include"include\medit.h"
#include"include\mtext.h"
#include"include\mbox.h"
#include"include\mok.h"
#include"include\micon.h"
#include"include\miconb.h"
#include"include\mpbutton.h"
#include"include\mscroll.h"
#include"include\mvscroll.h"
#include"include\mpcheck.h"
#include"include\mpradio.h"
#include"include\mdocwin.h"
#include"include\mclient.h"
#include"include\define.h"
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<fstream.h>
#include<alloc.h>
#include<graphics.h>
ifstream MApp::HZ("hz.fon",ios::binary);
MApp * MApp::Application; //这一行必须定义
//主菜单项
class MyBarItem : public MBarMenuItem
 {
  public:
	MyBarItem(int x,int y,int h,char *text,int k=0,char *idname="BAR")
	 :MBarMenuItem(x,y,h,text,idname,k){}
	virtual int F();
 };
//子菜单项

class MyItem : public MListItem
 {
  public:
	MyItem(int x,int y,int h,char *text1,char *idname="NOID")
	 :MListItem(x,y,h,text1,idname){}
	virtual int F();
 };

//自定义的滚动条类
class MyMVScroll : public MVScroll
 {
  private:
	int X, Y,delta,PH;
  public:
	 MyMVScroll(int x,int y,int l,int inc,int pageinc)
	  :MVScroll(x,y,l,inc,pageinc){X=20;Y=350;PH=0;}
	 virtual int F(char *);
 };
class MyMHScroll : public MHScroll
 {
  public:
	 MyMHScroll(int x,int y,int l,int inc,int pageinc);
	 virtual int F(char *);
 };
//自定义的图标按钮
class MyMIconB : public MIconB
 {
  public:
	MyMIconB(int x,int y,char *filename,char *text)
	 : MIconB(x,y,filename,text){}
	virtual int F();
 };
//主菜单某一项选中时,虚函数F()被执行,请注意函数F()在许多类
//中都有很重要的作用
int MyBarItem::F()
 {
  if(!strcmp(GetName(),"退出系统")) return 0;
  if(!strcmp(GetName(),"对话框"))
	{
		int sx=60,sy=60;
		char *c="数据输入\n";
		MDialog &adia=*new MDialog(
			  sx,sy,400,180,"D1","对话框");
		adia.Add(*new MOk(60+100,60+143,180,24));
		adia.Add(*new MCheck(sx+10,sy+30,"文本","check1",1));
		adia.Add(*new MCheck(sx+80,sy+30,"二进制","check2",0));
		adia.Add(*new MCheck(sx+180,sy+30,"特殊格式","check1",0));
		adia.Add(*new MCheck(sx+280,sy+30,"Foxpro","check1",0));

		adia.Add(*new MRadio(sx+15,sy+50,"单色显示器","r1","G1",adia,1));
		adia.Add(*new MRadio(sx+15,sy+70,"VGA彩显","r2","G1",adia,0));
		adia.Add(*new MRadio(sx+15,sy+90,"SVGA彩显","r3","G1",adia,0));

		adia.Add(*new MRadio(sx+200,sy+50,"CD驱动器","r1","G2",adia,1));
		adia.Add(*new MRadio(sx+200,sy+70,"16位声霸卡","r2","G2",adia,0));
		adia.Add(*new MRadio(sx+200,sy+90,"视屏加速卡","r3","G2",adia,0));

		adia.Add(*new MStaticBox(sx+8,sy+48,130,60));
		adia.Add(*new MStaticBox(sx+190,sy+48,130,60));
		adia.Add(*new MText(sx+14,sy+122,"text1",c));

		adia.Add(*new MEdit(sx+80,sy+120,10,TEXT,"Borland","edit1"));
		adia.Add(*new MEdit(sx+200,sy+120,15,TEXT,"$120.00","edit2"));
		MApp::Application->Add(adia);
		return 1;
 }
  if(!strcmp(GetName(),"弹出式菜单"))
	{
	 int sx=x()+2,sy=y()+h()+1;
	 char *s1="标准弹出式菜单1";
	 char *l1="~";
	 char *s2="弹出一个对话框...";
	 char *l2="~";
	 char *s3="标准弹出式菜单3";
	 char *s4="标准弹出式菜单4";
	 char *s5="标准弹出式菜单5";
	 char *s6="标准弹出式菜单6";
	 char *s7="标准弹出式菜单7";
	 char *s8="标准弹出式菜单8";
	 int W=18;
	 MyItem *aitem;
	 MPopMenu &apop=*new MPopMenu(sx-1,y()+h(),"P1");
	 aitem=new MyItem(sx,sy,W,s1);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 apop.Add(*new MyItem(sx,sy=sy+W,W,l1));
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s2));
	 apop.Add(*new MyItem(sx,sy=sy+W,W,l2));
	 aitem=new MyItem(sx,sy=sy+W,W,s3);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 aitem=new MyItem(sx,sy=sy+W,W,s4);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 aitem=new MyItem(sx,sy=sy+W,W,s5);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s6));
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s7));
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s8));
	 MApp::Application->Add(apop);
	 return 1;
	}
  if(!strcmp(GetName(),"滚动条"))
	{
	  char *c="当按动滚动条时,函数F()被触发,你应当\n"
		"重写自己的F()函数,在触发时向其它构件\n"
		"发送消息\n";
	  int sx=140;
	  MDialog &adia=*new MDialog(
				sx,60,350,200,"D2","滚动条");
	  adia.Add(*new MOk(sx+90,60+150,160,35));
	  adia.Add(*new MText(sx+14,60+34,"text1",c));
	  adia.Add(*new MyMHScroll(sx+50,60+130,260,5,15));
	  MApp::Application->Add(adia);
	  return 1;
	}
  if(!strcmp(GetName(),"图形按钮"))
	{
	  char *c="通过对类MCheck的继承,并重载虚函数\n"
				 "UnFocus(),UnChecked()以及函数\n"
				 "Checked(),构成了图形检查框类\n";
	  char *c1="检查框\n",*c2="单选按钮\n";
	  int sx=140,sy=60;
	  MDialog &adia=*new MDialog(
				sx,sy,350,200,"D3","图形按钮");
	  adia.Add(*new MOk(sx+90,sy+160,160,30));
	  adia.Add(*new MText(sx+14,sy+34,"text1",c));
	  adia.Add(*new MStaticBox(sx+10,sy+30,320,60));

	  adia.Add(*new MPCheck(sx+80,sy+100,30,30,"LIB\\book.bmp"));
	  adia.Add(*new MPCheck(sx+110,sy+100,30,30,"LIB\\hand.bmp"));
	  adia.Add(*new MPCheck(sx+140,sy+100,30,30,"LIB\\find.bmp"));
	  adia.Add(*new MPCheck(sx+170,sy+100,30,30,"LIB\\findg.bmp"));
	  adia.Add(*new MPCheck(sx+200,sy+100,30,30,"LIB\\undo.bmp"));
	  adia.Add(*new MPCheck(sx+230,sy+100,30,30,"LIB\\mouse.bmp"));

	  adia.Add(*new MPRadio(sx+80,sy+130,30,30,"LIB\\book.bmp","r1","g1",adia,1));
	  adia.Add(*new MPRadio(sx+110,sy+130,30,30,"LIB\\hand.bmp","r2","g1",adia,0));
	  adia.Add(*new MPRadio(sx+140,sy+130,30,30,"LIB\\find.bmp","r3","g1",adia,0));

	  adia.Add(*new MPRadio(sx+180,sy+130,30,30,"LIB\\findg.bmp","r1","g2",adia,0));
	  adia.Add(*new MPRadio(sx+210,sy+130,30,30,"LIB\\undo.bmp","r2","g2",adia,0));
	  adia.Add(*new MPRadio(sx+240,sy+130,30,30,"LIB\\mouse.bmp","r3","g2",adia,0));
	  adia.Add(*new MText(sx+14,sy+103,"text1",c1));
	  adia.Add(*new MText(sx+14,sy+133,"text1",c2));

	  MApp::Application->Add(adia);
	  return 1;
	}
  if(!strcmp(GetName(),"帮助"))
	{
	 char *s1="如何使用帮助 F1";
	 char *s2="帮助内容 ALT+F1";
	 char *s3="~";
	 char *s4="关于本系统...";
	 int sy=y()+h()+1;
	 int sx=x()+2;
	 int W=18;
	 MyItem *aitem;
	 MPopMenu &apop=*new MPopMenu(sx-1,y()+h(),"P1");
	 aitem=new MyItem(sx,sy,W,s1);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 aitem=new MyItem(sx,sy=sy+W,W,s2);
	 aitem->SetAc(0);
	 apop.Add(*aitem);
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s3));
	 apop.Add(*new MyItem(sx,sy=sy+W,W,s4));
	 MApp::Application->Add(apop);
	 return 1;
	}
	return 1;
 }
//当滚动条按了以后,激活此函数
MyMHScroll::MyMHScroll(int x1,int y1,int l,int inc,int pageinc)
	  :MHScroll(x1,y1,l,inc,pageinc)
 {}
int MyMHScroll::F(char *)
 {
  setcolor(BLACK);
  rectangle(x(),y()-30,x()+w()-1,y()-9);
  setfillstyle(SOLID_FILL,YELLOW);
  bar(x()+1,y()-29,x()+w()-2,y()-10);
  setfillstyle(SOLID_FILL,BLUE);
  int p=((count*(w()-2))/maxcount);
  setfillstyle(SOLID_FILL,BLUE);
  bar(x()+1,y()-29,x()+p,y()-10);
  return 1;
 }
int MyMVScroll::F(char *)
 {
 //取消下面的注释时,将实现图标按钮的滚动,但这样做会
// 打乱屏幕
/*	void far *s=farmalloc(imagesize(X,Y-PH,X+570,Y-PH+80));
	int num=MApp::Application->GetNumber();
	if(!s) return 1;
	getimage(X,Y-PH,X+570,Y-PH+80,s);
	int delta=(count*200)/maxcount;

	setfillstyle(SOLID_FILL,3);
	if(delta>PH)
	  bar(X,Y+80-delta,X+570,Y-PH+80);
	else
	  bar(X,Y-PH,X+570,Y-delta);

	putimage(X,Y-delta,s,COPY_PUT);
	farfree(s);
	for(int i=0;i<num;i++)
	 if(!strcmp((MApp::Application->GetObj(i)).Nameof(),"miconb"))
		(MApp::Application->GetObj(i)).y(Y-delta);
	PH=delta; */
	return 1;
 }
//当弹出菜单选择后,激活以下组件
int MyItem::F()
 {
	char *c1="此功能还没定义,相信你很容易将你自己的功能\n"
			  "加到弹出式菜单功能项中\n";
	char *c2="      飞虹VISION      \n "
			 "本演示程序由\"飞虹Vision \"开发\n"
			 "通过本演示程序,你可以了解飞虹Vision\n"
			 "提供了哪些功能\n";
	if(!strcmp(GetName(),"弹出一个对话框..."))
	 {
	  int sx=140;
	  MDialog &adia=*new MDialog(
		 sx,60,360,108,"D4","弹出式菜单");
	  adia.Add(*new MOk(sx+20,60+70,320,25));
	  adia.Add(*new MStaticBox(sx+10,60+30,336,38));
	  adia.Add(*new MText(sx+14,60+34,"text2",c1));
	  MApp::Application->Add(adia);
	  return DEL;
	 }
	if(!strcmp(GetName(),"关于本系统..."))
	 {
	  int sx=140;
	  MDialog &adia=*new MDialog(
			sx,60,400,150,"D5","系统讯息");
	  adia.Add(*new MIcon(sx+330,60+30,"lib\\flag.bmp"));
	  adia.Add(*new MOk(sx+130,60+90,200,35));
	  adia.Add(*new MStaticBox(sx+10,60+30,380,100));
	  adia.Add(*new MText(sx+14,60+34,"text1",c2));
	  MApp::Application->Add(adia);
	  return DEL;
	 }
	return DEL;
 }
//当图表双击以后激活以下函数
int MyMIconB::F()
 {
	int sx=180;
	int sy=100;
	char *c="重载自己的图标执行函数,当双击图标时,执行\n"
			  "此函数,这儿简单地产生了一个对话框,当然\n"
			  "你可以写出更复杂的函数\n";
	MDialog &adia=*new MDialog(
							sx,sy,360,140,"ICONB","图标按钮");
	adia.Add(*new MOk(sx+20,sy+100,320,25));
	adia.Add(*new MStaticBox(sx+10,sy+30,336,60));
	adia.Add(*new MText(sx+14,sy+34,"text2",c));
	MApp::Application->Add(adia);
	return 1;
 }
main()
 {
  MApp Applicat;
  char *s1="对话框";
  char *s2="弹出式菜单";
  char *s3="滚动条";
  char *s4="图形按钮";
  char *s5="图形";
  char *s6="帮助";
  char *s7="退出系统";
  int barx=0;
  int bary=20;
  Applicat.Paint("飞虹Vision演示程序");
  //add the button
  Applicat.Add(*new MBar(0,bary+18,getmaxx()+1,40,"status"));
  Applicat.Add(*new MPButton(1,bary+22,30,30,"LIB\\book.bmp","but1","查询资料"));
  Applicat.Add(*new MPButton(31,bary+22,30,30,"LIB\\hand.bmp","but2","上网联结"));
  Applicat.Add(*new MPButton(61,bary+22,30,30,"LIB\\earth.bmp","but3","国别设置"));
  Applicat.Add(*new MPButton(91,bary+22,30,30,"LIB\\findg.bmp","but4","再次寻找..."));
  Applicat.Add(*new MPButton(121,bary+22,30,30,"LIB\\undo.bmp","but5","恢复"));
  Applicat.Add(*new MPButton(200,bary+22,30,30,"LIB\\mouse.bmp","but5","鼠标调节"));
  Applicat.Add(*new MPButton(230,bary+22,30,30,"LIB\\trans.bmp","but5","动态翻译"));
  Applicat.Add(*new MPButton(260,bary+22,30,30,"LIB\\chin.bmp","but5","字型转换"));
  Applicat.Add(*new MPButton(460,bary+22,30,30,"LIB\\about.bmp","but5","关于本系统"));

//add the iconbutton
////////////////////
  Applicat.Add(*new MyMIconB(30,370,"LIB\\iconb1.bmp","系统设置"));
  Applicat.Add(*new MyMIconB(110,370,"LIB\\iconb2.bmp","日前设置"));
  Applicat.Add(*new MyMIconB(190,370,"LIB\\iconb3.bmp","度量体系"));
  Applicat.Add(*new MyMIconB(270,370,"LIB\\iconb4.bmp","字体设置"));
  Applicat.Add(*new MyMIconB(350,370,"LIB\\iconb5.bmp","国际标准"));
  //add the menu in application
  MyBarItem *abar;
  Applicat.Add(*new MyBarItem(barx,bary,18,s1));
  barx+=Length(s1)+16;
  Applicat.Add(*new MyBarItem(barx,bary,18,s2));
  barx+=Length(s2)+16;
  Applicat.Add(*new MyBarItem(barx,bary,18,s3));
  barx+=Length(s3)+16;
  Applicat.Add(*new MyBarItem(barx,bary,18,s4));
  barx+=Length(s4)+16;
  abar=new MyBarItem(barx,bary,18,s5);
  abar->SetAc(0);
  Applicat.Add(*abar);
  barx+=Length(s5)+16;
  Applicat.Add(*new MyBarItem(barx,bary,18,s6));
  barx+=Length(s6)+16;
  Applicat.Add(*new MyBarItem(barx,bary,18,s7));
  //////////////////////////////////
  //add vscroll bar in application//
  //////////////////////////////////
  Applicat.Add(*new MyMVScroll(getmaxx()-14,78,getmaxy()-113,2,10));
  Applicat.Add(*new MHScroll(0,getmaxy()-35,getmaxx()+1,5,15));
  ///////////////////////////////////////////////
  //add the window box int client window/////////
  //and also add the radio button in box window//
  //firstly we create a client window////////////
  ///////////////////////////////////////////////
  MClient &aclient=*new MClient();//use default cordination
  int wx1=50,wy1=120;
  MWindow &awin=*new MWindow(wx1-10,wy1-30,400,270,"","DW1");
  awin.Add(*new MPRadio(wx1,wy1,30,30,"LIB\\book.bmp","r1","g1",awin,1));
  awin.Add(*new MPRadio(wx1,wy1+=30,30,30,"LIB\\hand.bmp","r2","g1",awin,0));
  awin.Add(*new MPRadio(wx1,wy1+=30,30,30,"LIB\\earth.bmp","r3","g1",awin,0));
  awin.Add(*new MPRadio(wx1,wy1+=30,30,30,"LIB\\findg.bmp","r4","g1",awin,0));
  awin.Add(*new MPRadio(wx1,wy1+=30,30,30,"LIB\\undo.bmp","r5","g1",awin,0));
  awin.Add(*new MPRadio(wx1,wy1+=30,30,30,"LIB\\mouse.bmp","r6","g1",awin,0));
  awin.Add(*new MIcon(wx1+40,120,"lib\\new.bmp"));
  awin.SetBkcolor(LIGHTGRAY);
  aclient.Add(awin);
  int wx2=130,wy2=120;
  MWindow &awin1=*new MWindow(wx2-2,wy2-30,470,170,"","DW2");
  awin1.SetBkcolor(YELLOW);
  awin1.Add(*new MText(wx2+10,wy2,"S",
	"· 引进了控制管理器,使各个控制高效快速运行 ;\n"
	"· 抽取控制的共性,设计出功能强大的控制基类 ;\n"
	"· 提供了大量可直接使用的现成类,如按钮类,对话框类;\n"
	"· 支持位图的显示,能直接使用Windows下的图形资源;\n"
	"· 标准控制与位图类结合,便立刻产生绚丽多彩的图形控制;\n"
	"· 专门设计的控制功能函数,在控制激活时执行用户的功能;\n"
	"· 高效率的类等级设计,积木似构造阁下的工程\n"
	"· 支持对窗口的所有操作,如移动,切换等\n"));
  aclient.Add(awin1);
  Applicat.Add(aclient);
////////box define end here

  return Applicat.Process();
 }

⌨️ 快捷键说明

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