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

📄 step13.cpp

📁 飞虹 vision仿windows开发
💻 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 + -