📄 step13.cpp
字号:
//Copyright 1994-1997飞虹软件工作室
//本程序演示如何产生一自定义的构件
#include"..\include\app.h"
#include"..\include\mapp.h"
#include"..\include\define.h"
ifstream MApp::HZ("\\SUNSHINE\\hz.fon",ios::binary); //汉字库
MApp * MApp::Application; //应用标志,上2行必须定义!
//定义自己的构件,必须重载基本类MObj,实际上,飞虹Vision整个系统类
//都是由MObj继承而来(除Mouse类和MBmp类)
class myobj : public MObj
{
private:
int isget;
public:
myobj(int x,int y,int w,int h,char *idname);
virtual void UnFocus(); //构件第一次显示调用此虚函数,构件未接受输入时调用此函数
virtual void GetFocus();//构件接受输入调用此函数
virtual int Process();//消息处理器
virtual char far *Nameof(){return "myobj";}//类识别
};
main()
{
MApp myapp; //产生一个应用
myapp.Paint("如何定义自己的构件");
myapp.Add(* new myobj(100,100,200,150,"myobj"));
return myapp.Process();
}
myobj::myobj(int x,int y,int w,int h,char *idname)
: MObj(x,y,w,h,idname)
{
isget=0;
}
void myobj::UnFocus()
{
Mouse am(1); //Mouse 自动off and on
setcolor(BLACK);
rectangle(x(),y(),x()+w()-1,y()+h()-1);
setfillstyle(SOLID_FILL,WHITE);
bar(x()+1,y()+1,x()+w()-2,y()+h()-2);
}
void myobj::GetFocus()
{
Mouse am(1); //Mouse 自动off and on
setfillstyle(SOLID_FILL,RED);
bar(x()+1,y()+1,x()+w()-2,y()+h()-2);
}
int myobj::Process()
{
Mouse am; //读取鼠标状态
if(firstrun){firstrun=0;UnFocus();return 1;}
//firstrun为一内部变量,初始值为一,它表明构件是否第一次显示(激活)
//注意最后要将firstrun 置0
if(am.x()<x()||am.y()<y()||am.x()>(x()+w()-1)||am.y()>(y()+h()-1))
{
if(isget)
{ UnFocus();isget=0;
(MApp::Application->GetObj("STATUSBAR")).
TransMes(SENDTEXT,"鼠标在控制外,看设计一个控制是多么的容易");
//向状态条发送消息SENDTEXT(define.h),要状态条显示当前
//状态信息
}
return 1; //将控制传给下一个
} //鼠标在构件外
if(!isget)
{
isget=1;GetFocus();
(MApp::Application->GetObj("STATUSBAR")).TransMes(SENDTEXT,"鼠标在控制内");
}
return 1; //将控制传给下一个
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -