练习:鼠标类设计之2_类和接口

前言

续鼠标类设计之1,前面解决了鼠标信号问题,这里解决显示问题

引入

鼠标伴随操作系统而生,考虑在屏幕上怎样显示

思路

1>鼠标显示是一个动态效果,所以需要一个"动态效果类"对象,添加进鼠标类的属性里。

在面向对象的程序中,对象模拟的个体可以有动作---漆匠;对象模拟的动作也可以是对象。所以有了Painter类和Paint类。-----------来自"初识类"

这里建立起一个MouseMove的类,并将其作为成员属性添加进鼠标类中

复制代码
class Mouse{
    public:
        /*下列状态表示左击,右击,双击,拖拽,卷动,鼠标平移,升降,冻结*/
        enum State{LCLICK,RCLICK,DCLICK,DRAG,ROLL,MOVE,RISE,FREEZE};
    private:
        State state;
        MouseMove mouseMove;             //新增鼠标移动类对象
    public:
        Mouse();
        State getState(MouseInfo mi);    //传入鼠标信息类对象,获取状态
}

2>鼠标显示是动态效果,采用一种思路:动态=静态效果的叠加

所以建立一个类来实现静态的,初始的效果,也就是资源类,映射到硬件寄存器。目的是屏幕上显示出鼠标的外观。假设鼠标外观是个箭头,命名新类Arrow.

静态类实现

现在已经有了静态类的目的:屏幕上生成一个箭头,来实现它.

复制代码
class Arrow{
    private:
        vector<Point> points;
    public:
        Arrow(int x,int y);
        接口函数;
}

----接口函数是硬件供应商提供的,把采集到的点传入,得到箭头形状.

这里我们能做的是采集相应的点.可以在构造方法里写出来..具体如何采集,可以自己硬写,也可以用计算机图形学的知识,笔者没有这方面的知识积累,所以先放一下.

效果类实现

鼠标在屏幕上移动的效果,可以看作在不同的位置画箭头.

有了这个思路,可以写出效果类

复制代码
class MouseMove{
    private:
        MouseInfo mi;                                     //左键单击
    public:
        MouseMove(MouseInfo MI):mi(MI){};                 //构造函数
        void work();                               
}

实现鼠标的移动

复制代码
void MouseMove::work(){
    int moveTemp=mi.move;                                //提取鼠标横坐标
    int riseTemp=mi.rise;                                //提取鼠标纵坐标
    Arrow *arrow=new Arrow(moveTemp,riseTemp);           //生成箭头
    接口函数;                                            //显示箭头
    if(mi.move!=moveTemp||mi.rise!=riseTemp){
        Arrow *new_arrow=new Arrow(mi.move,mi.rise);     //重新生成箭头
        接口函数;                                        //重新显示箭头 
        delete(arrow);
    }
}
相关推荐
十二1 小时前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
D e re k ZH3 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
zjxtxdy5 小时前
C++面向对象程序开发-类与对象
开发语言·c++
東隅已逝,桑榆非晚6 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
qq_406981037 小时前
c++拷贝构造函数
开发语言·c++
H.莓飛10 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla10 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
沫璃染墨10 小时前
从零入门计算机网络系列(十五):TCP可靠传输机制详解——从序号与确认应答到乱序处理
服务器·网络·c++·tcp/ip·tcp
青少儿编程课堂10 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析
c++·python·算法·bfs·信息学竞赛
旖旎夜光11 小时前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习