📄 demo.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 + -