投影 / 投屏选项:仅电脑屏幕、复制、扩展、仅第二屏幕的区别

"Win + P"组合键调出设置界面后选择:

  1. 仅电脑屏幕:电脑的内容仅在主屏幕上显示,第二屏幕不显示任何内容。
  2. 复制:电脑的内容既在主屏幕上显示,也在第二屏幕上显示,且两个屏幕上的内容是完全相同的。这常用于需要展示相同内容的场景,如演讲或教学。
  3. 扩展:第二屏幕成为电脑的扩展区域。这意味着主屏幕和第二屏幕都可以显示不同的内容,但整体上提供一个更大的工作空间。例如,可以在主屏幕上打开一个文档,而在第二屏幕上打开一个浏览器窗口。
  4. 仅第二屏幕:与“仅电脑屏幕”相反。在此模式下,电脑的所有内容都不在主屏幕上显示,而是完全在第二屏幕上。
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于这个类,可以使用C++标准库中的序列化工具来进行序列化和反序列化。下面是一个示例代码: #include <iostream> #include <fstream> #include <sstream> #include <string> #include <map> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> class InformationUI { public: /*视角0第一视角1第三视角*/ int viewAngleEnum; /*球标图*/ int bubble; /*是否英制螺牙*/ int isEnglishSystem; /*是否添加研磨符号*/ int isLap; /*球标图大小*/ double bubbleSize; /*图纸路径*/ std::string drawSheetPath; /*客户标准*/ std::string customer; /*投影视图0主视图1右视图2前视图3左视图4后视图5正三轴*/ int view[6]; /*公共属性and属性值*/ std::map<std::string, std::string> commonAttrAndVal; /*被选中零件标记*/ std::string selLable; /*临时部件*/ static std::string tempPartName; // 序列化函数 friend class boost::serialization::access; template <class Archive> void serialize(Archive& ar, const unsigned int version) { ar & viewAngleEnum; ar & bubble; ar & isEnglishSystem; ar & isLap; ar & bubbleSize; ar & drawSheetPath; ar & customer; ar & view; ar & commonAttrAndVal; ar & selLable; ar & tempPartName; } }; std::string serialize(const InformationUI& infoUI) { std::ostringstream os; boost::archive::text_oarchive oa(os); oa << infoUI; return os.str(); } InformationUI deserialize(const std::string& str) { std::istringstream is(str); boost::archive::text_iarchive ia(is); InformationUI infoUI; ia >> infoUI; return infoUI; } int main() { InformationUI infoUI; infoUI.viewAngleEnum = 1; infoUI.bubble = 2; infoUI.isEnglishSystem = 0; infoUI.isLap = 1; infoUI.bubbleSize = 3.14; infoUI.drawSheetPath = "/path/to/drawsheet"; infoUI.customer = "customer1"; infoUI.view[0] = 0; infoUI.view[1] = 1; infoUI.view[2] = 2; infoUI.view[3] = 3; infoUI.view[4] = 4; infoUI.view[5] = 5; infoUI.commonAttrAndVal["attr1"] = "val1"; infoUI.commonAttrAndVal["attr2"] = "val2"; infoUI.selLable = "selected"; InformationUI::tempPartName = "tempPart"; std::string serialized = serialize(infoUI); std::cout << "Serialized: " << serialized << std::endl; InformationUI deserialized = deserialize(serialized); std::cout << "Deserialized:" << std::endl; std::cout << "viewAngleEnum: " << deserialized.viewAngleEnum << std::endl; std::cout << "bubble: " << deserialized.bubble << std::endl; std::cout << "isEnglishSystem: " << deserialized.isEnglishSystem << std::endl; std::cout << "isLap: " << deserialized.isLap << std::endl; std::cout << "bubbleSize: " << deserialized.bubbleSize << std::endl; std::cout << "drawSheetPath: " << deserialized.drawSheetPath << std::endl; std::cout << "customer: " << deserialized.customer << std::endl; std::cout << "view: "; for (int i = 0; i < 6; ++i) { std::cout << deserialized.view[i] << " "; } std::cout << std::endl; std::cout << "commonAttrAndVal: "; for (const auto& it : deserialized.commonAttrAndVal) { std::cout << it.first << "=" << it.second << " "; } std::cout << std::endl; std::cout << "selLable: " << deserialized.selLable << std::endl; std::cout << "tempPartName: " << InformationUI::tempPartName << std::endl; return 0; } 这里使用了boost库中的archive来进行序列化和反序列化。在序列化函数中,首先将对象os进行输出流处理,然后再将其序列化为字符串返回。在反序列化函数中,将输入流is绑定到输入字符串str上,然后将其反序列化为对象返回。在main函数中,我们创建了一个InformationUI对象,并对其成员变量进行初始化。然后使用serialize函数将其序列化为字符串,再使用deserialize函数将其反序列化为对象,并输出其成员变量的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Silhouette_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值