Qt 更改屏幕方向

最近项目中涉及到一个竖屏的项目,屏幕分辨率要求800*1600。

原本是手动在电脑上设置好的,但不知道是系统不稳定亦或是其他什么原因,客户反馈隔一段时间就会出现系统自动改回原定1920*1080分辨率。由于机器无人看守,必须自动检测自动检测改回。

几经查阅资料,终于找到了以编程方式更改屏幕方向的方法。

 

更改显示设置

要更改显示设置,请将指向有效 DEVMODE 结构的指针传递给 ChangeDisplaySettings API。以下 C++ 代码演示如何使屏幕方向顺时针旋转 90 度。请注意,这段代码只对支持相应显示设置的设备起作用。遵守 ChangeDisplaySettings API 的返回值十分重要,因为有些操作为了在图形模式下工作,需要计算机重启。

DEVMODE dm; 

// initialize the DEVMODE structure     
ZeroMemory(&dm, sizeof(dm));      
dm.dmSize = sizeof(dm);  
if (0 != EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm))      
{         
   // swap height and width        
   DWORD dwTemp = dm.dmPelsHeight;        
   dm.dmPelsHeight= dm.dmPelsWidth;         
   dm.dmPelsWidth = dwTemp;         
   // determine new orientaion         
   switch (dm.dmDisplayOrientation)         
   {         
      case DMDO_DEFAULT:            
        dm.dmDisplayOrientation = DMDO_270;            
      break;         
      case DMDO_270:            
        dm.dmDisplayOrientation = DMDO_DEFAULT;            
      break;        
      default:            
        // unknown orientation value            
        // add exception handling here            
      break;         
    }         
    long lRet = ChangeDisplaySettings(&dm, 0);         
    if (DISP_CHANGE_SUCCESSFUL != lRet)         
    {            
      // add exception handling here         
    }      
}

附原文链接:https://msdn.microsoft.com/zh-cn/library/ms812499.aspx

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++开发框架,可以用于开发各种应用程序。UDP是一种无连接的网络传输协议,可以用于快速传输数据。在Qt中,我们可以使用UDP协议实现屏幕共享功能。 首先,我们需要创建一个UDP服务端和一个UDP客户端。服务端负责接收屏幕数据并发送给客户端,客户端负责接收服务端发送的数据并显示在屏幕上。 服务端可以通过Qt的QUdpSocket类来实现。我们可以通过绑定一个固定的IP地址和端口号来创建一个UDP监听socket。然后,通过调用QUdpSocket的bind方法来实现监听功能。当有数据到达时,我们可以通过读取QUdpSocket的pendingDatagramSize方法获取数据的大小,并调用QUdpSocket的readDatagram方法来读取数据。 客户端也可以通过Qt的QUdpSocket类来实现。我们可以通过QUdpSocket的writeDatagram方法来向服务端发送数据。通过设置服务端的IP地址和端口号,客户端就可以将数据发送给服务端了。同时,我们可以通过QUdpSocket的readyRead方法来判断是否有数据到达,并通过readDatagram方法来读取数据。 为了实现屏幕共享功能,我们可以使用Qt的QScreen类来捕获屏幕上的图像。通过调用QScreen的grabWindow方法,我们可以获取到整个屏幕的图像。然后,我们可以将图像数据转换为字节数组,并使用QUdpSocket的writeDatagram方法发送给客户端。 在客户端接收到数据后,我们可以将字节数组转换为图像数据,并使用Qt的QImage类显示在屏幕上。 总之,使用Qt和UDP协议可以实现屏幕共享功能。我们可以通过Qt提供的QUdpSocket类来实现UDP通信,通过QScreen类来捕获屏幕图像,并使用QImage类将图像数据显示在屏幕上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值