VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 302|回复: 0

请编程实现一个简易的屏幕窗口模拟c++

[复制链接]
66_avatar_middle
最佳答案
0 
在线会员 发表于 2022-6-15 14:44:59 | 显示全部楼层 |阅读模式
请编程实现一个简易的屏幕窗口模拟,具体要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

编写 CPoint 类,描述二维平面内的一个坐标点,包含 x,y 两个坐标,重载 >> 运算符以实现输出形如 (x,y) 的信息。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

编写 CWindow 类,描述平面上的一个窗口,包含如下信息:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

int id ,窗口唯一标识,为了保证唯一性,可以使用 (int)time(NULL) 返回的时间戳赋值。
char title[255] ,窗口标题
CPoint topleft,bottomright ,左上角和右下角的坐标
两种形态的构造函数:
* 提供标题和两点坐标的:CWindow(const char* title,CPoint topleft,CPoint bottomright)
* 提供标题和左上角坐标以及窗口高宽的:CWindow(const char* title,CPoint topleft,int width,int height)
一个静态成员 CWindow* topmost ,指向当前活动窗口,可以初始化为 nullptr
一个 Activate() 方法,将当前窗口置为活动窗口
重载 >> 运算符输出形如 title (x,y)-(x,y) 的窗口信息,参见测试用例输出结果
其它成员如果需要请自行编写,例如 CPoint 可以设计 getX 和 getY 接口便于 CWindow 根据高宽计算右下角坐标。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

主程序生成了三个窗口并随机激活了一个,然后输出了激活后窗口的信息,请参考测试用例的输出进行编程。
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>

using namespace std;

/*
        请编程实现一个简易的屏幕窗口模拟,具体要求如下:
       
        * 编写 CPoint 类,描述二维平面内的一个坐标点,包含 x,y 两个坐标,重载 >> 运算符以实现输出形如 (x,y) 的信息。
        * 编写 CWindow 类,描述平面上的一个窗口,包含如下信息:

          int id ,窗口唯一标识,为了保证唯一性,可以使用 (int)time(NULL) 返回的时间戳赋值。
          char title[255] ,窗口标题
          CPoint topleft,bottomright ,左上角和右下角的坐标
          两种形态的构造函数:
                  提供标题和两点坐标的:CWindow(const char* title,CPoint topleft,CPoint bottomright)
                提供标题和左上角坐标以及窗口高宽的:CWindow(const char* title,CPoint topleft,int width,int height)
          一个静态成员 CWindow* topmost ,指向当前活动窗口,可以初始化为 nullptr
          一个 Activate() 方法,将当前窗口置为活动窗口
          重载 >> 运算符输出窗口信息,形如 title (x,y)-(x,y) ,参见测试用例输出结果
       
        * 其它成员如果需要请自行编写,例如 CPoint 可以设计 getX 和 getY 接口便于 CWindow 根据高宽计算右下角坐标

        主程序生成了三个窗口并随机激活了一个,然后输出了激活后窗口的信息,请参考测试用例的输出进行编程。
*/




//主程序
int main()
{
        //主程序代码仅为测试类的设计而编写
        //伪随机化,真随机请使用 srand(time(NULL));
        //srand(2022);

        //最大窗口数量
        const int MAX = 3;

        /*
        注意屏幕的坐标系为:

        y |
          |
          |
          |____________
         0,0           x

        */       

        //生成 MAX 个窗口对象存储在数组中
        CWindow windows[MAX] {{"notepad",CPoint(10,20),CPoint(20,5)},        //提供两点坐标初始化
                                                {"mspaint",CPoint(10,20),5,6},        //提供一点坐标加高宽初始化
                                                {"code",CPoint(2,20),CPoint(30,1)}        //提供两点坐标初始化
                                                };

        //随机选择一个窗口激活到前台
        windows[rand()%MAX].Activate();

        //输出这个前台窗口信息
        cout << *CWindow::topmost << endl;

    return 0;




上一篇:这是类型转换的问题吗?
下一篇:请问为什么这两种写法的结果不同,应该如何改正?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-11-28 15:40

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表