📄 step12.cpp
字号:
//Copyright 1994-1997飞虹软件工作室
//本程序演示如何产生多文本窗口
#include"..\include\app.h"
#include"..\include\mapp.h"
#include"..\include\mbutton.h"
#include"..\include\mok.h"
#include"..\include\mtext.h"
#include"..\include\mdocwin.h"
#include"..\include\mclient.h" //客户窗头文件
#include<stdlib.h>
#include<string.h>
ifstream MApp::HZ("\\SUNSHINE\\hz.fon",ios::binary); //汉字库
MApp * MApp::Application; //应用标志,上2行必须定义!
class myMButton : public MButton
{
public:
myMButton(int x,int y,int w,int h,char *text,char *idname,char *sta)
: MButton(x,y,w,h,text,idname,sta){}
virtual int F(); //重载F函数,当按钮按下时激活此函数
};
main()
{
MApp myapp; //产生一个应用
myapp.Paint("多文本界面");
myapp.Add(*new myMButton(30,50,150,60,"产生文本窗","B1",
"此按钮将在屏幕上产生一个标准的窗口"));
MClient &myclient=* new MClient(); //用默认位置与标志,此为默认的客户窗
myapp.Add(myclient);
return myapp.Process();
}
int myMButton::F()
{
//在下面的代码中,请注意如何用管理器GetObj函数得到指定构件
//,注意程序是如何进行类型转换的,这一点很重要,它是实现各
//构件通讯的基础
static int sx=70,sy=100;
int sw=370,sh=180;
static int i=0;
char *topic=new char[10];
char *c=new char[3];
topic[0]='D';topic[1]='\0';c[0]='\0';
sx+=30;sy+=30;
if(sx+sw-1>getmaxx()||sy+sh-1>getmaxy()) return 1;
i++;
if(((MClient&)(MApp::Application->GetObj("MCLIENT"))).GetWindowNum()<=0)
{
sx=70;sy=100;i=0;
}
itoa(i,c,10);strcat(topic,c);
MWindow &mywindow=* new MWindow(sx,sy,sw,sh,"",topic);
//参数1,2,3,4:位置,参数5:标志,参数6:标题条文本
mywindow.Add(*new MText(sx+10,sy+30,"T1",
"对话框,多文本窗,应用都由类MWindowObj派生\n"
"来,都属于构件管理器,文本窗很类似对话框,但\n"
"文本窗激活时并不独占消息,别的部件仍可运行,\n"
"文本窗的位置只限于客户窗内,客户窗管理文本窗\n"
"的一切动作,如切换,删除等,客户窗在屏幕上是不\n"
"可见的\n"));
mywindow.Add(*new MOk(sx+100,sy+sh-50,160,40));
//用Add将构件加到窗口中去
((MClient&)(MApp::Application->GetObj("MCLIENT"/*默认客户标志*/))).Add(mywindow);
//再将窗口加到客户窗
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -