MFC中主副屏窗口全屏最大化的几种方法

1、根据鼠标位置判断全屏位置

枚举所有窗口

CArray<MONITORINFO, MONITORINFO&> g_arrMonitorInfo;BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{static BOOL bFirst = TRUE;MONITORINFO monitorinfo;monitorinfo.cbSize = sizeof(MONITORINFO);//获得显示器信息,将信息保存到monitorinfo中GetMonitorInfo(hMonitor, &monitorinfo);//若检测到主屏if (monitorinfo.dwFlags == MONITORINFOF_PRIMARY){if (bFirst) //第一次检测到主屏{bFirst = FALSE;}else      //第二次检测到主屏,所有的监视器都已经检测了一遍,停止检测{bFirst = TRUE;return FALSE;}}g_arrMonitorInfo.Add(monitorinfo);return TRUE;
}

重写窗口最大化函数

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{if (nType == SIZE_MAXIMIZED && !CUserOptionSettingsCache::Instance()->GetLoginBasicFullScreen()){g_arrMonitorInfo.RemoveAll();EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, NULL);//获取当前鼠标位置,判断将窗口全屏到那个屏幕CPoint ptScreen;GetCursorPos(&ptScreen);for (int i = 0; i < g_arrMonitorInfo.GetSize(); i++){CRect rcScreen = g_arrMonitorInfo[i].rcMonitor;if (rcScreen.PtInRect(ptScreen)){CRect rcWorkArea = g_arrMonitorInfo[i].rcWork;CRect rc;rc.SubtractRect(rcScreen, rcWorkArea);rcWorkArea.InflateRect((rc.Height() > rc.Width() && rc.left == rcScreen.left) ? 0 : 1,(rc.Width() > rc.Height() && rc.top == rcScreen.top) ? 0 : 1,(rc.Height() > rc.Width() && rc.right == rcScreen.right) ? 0 : 1,(rc.Width() > rc.Height() && rc.bottom == rcScreen.bottom) ? 0 : 1);MoveWindow(&rcWorkArea);break;}}CBCGPFrameWnd::OnSize(nType, cx, cy);
}

2、利用窗口在屏幕位置进行识别

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{if (nType == SIZE_MAXIMIZED && !CUserOptionSettingsCache::Instance()->GetLoginBasicFullScreen()){//通过程序在那个屏幕中占比多判断全屏那个屏幕MONITORINFO mi;mi.cbSize = sizeof(MONITORINFO);if (GetMonitorInfo(MonitorFromWindow(this->GetSafeHwnd(), MONITOR_DEFAULTTONEAREST), &mi)){CRect rcScreen = mi.rcMonitor;CRect rcWorkArea = mi.rcWork;CRect rc;rc.SubtractRect(rcScreen, rcWorkArea);rcWorkArea.InflateRect((rc.Height()>rc.Width() && rc.left == rcScreen.left) ? 0 : 1,(rc.Width()>rc.Height() && rc.top == rcScreen.top) ? 0 : 1,(rc.Height()>rc.Width() && rc.right == rcScreen.right) ? 0 : 1,(rc.Width()>rc.Height() && rc.bottom == rcScreen.bottom) ? 0 : 1);MoveWindow(&rcWorkArea);}}CBCGPFrameWnd::OnSize(nType, cx, cy);
}

MFC中主副屏窗口全屏最大化的几种方法相关推荐

  1. MFC中CSTATIC控件双击全屏/双击恢复

    双击全屏方法有两种 1.双击放大的时候调static控件的父句柄SerParent让控件的父句柄变成桌面,然后再提取桌面的分辨率用movewindow或者setwindowpos改变控件大小.恢复成原 ...

  2. QT中关于窗口全屏显示与退出全屏的实现

    近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示 ...

  3. Mac osx系统中virtual box 中的Ubuntu系统的全屏显示问题解决

    Mac osx系统中virtual box 中的Ubuntu系统的全屏显示问题解决 一 安装virtualBox工具 安装失败 其他尝试方法 一 安装virtualBox工具 选择Insert Gue ...

  4. Android Window悬浮窗窗口全屏(隐藏导航栏状态栏)

    在应用开发中,有时候需要利用弹出全屏的悬浮窗,因为有导航栏显示所以总是不能全屏,所以需要设置某些属性 让窗口全屏显示 例如: 在onCreate中的这段代码 Window window = getWi ...

  5. vmware16中win7虚拟机怎么设置全屏显示

    文章目录 一.win7系统屏幕没有适应vmware窗口全屏问题 二.解决办法 1.懒人方法 2.安装 vmware tools工具 操作系统要更新到sp1 没有安装win7补丁 一.win7系统屏幕没 ...

  6. 解决uni-app开发中iphoneX下背景不能全屏铺满的问题

    解决uni-app开发中iphoneX下背景不能全屏铺满的问题 参考文章: (1)解决uni-app开发中iphoneX下背景不能全屏铺满的问题 (2)https://www.cnblogs.com/ ...

  7. 【VMware】win 10:解决 win 7 虚拟机系统屏幕没有适应 vmware 窗口全屏问题

    目录 一.虚拟机系统屏幕没有适应vmware窗口全屏问题 二.解决方法 一.虚拟机系统屏幕没有适应vmware窗口全屏问题 二.解决方法 (1)虚拟机系统处于启动状态,点击打开"安装vmwa ...

  8. Vue中使用纯CSS实现全屏网格加渐变色背景布局

    Vue中使用纯CSS实现全屏网格加渐变色背景布局 CSDN:jcLee95 邮箱:291148484@163.com 本文地址:https://blog.csdn.net/qq_28550263/ar ...

  9. Android fragment 中控制某一个界面全屏与否

    项目中,只允许一个界面在横屏的时候,显示是全屏的,竖屏切换回来的时候又需要显示状态栏,所以需要监听横竖屏的状态,还要修改状态栏的隐藏与显示,如下代码: /*** 添加横竖屏监听,隐藏图形的菜单控件,2 ...

最新文章

  1. Linux的centos7.2部署rocketMq3.5.8
  2. Apache Mahout基于商品的协同过滤算法流程分析
  3. 强连通分量(学习心得)
  4. 如何在Windows上解决蓝牙问题
  5. Django 模板系统2
  6. java中四类八中_JAVA中的八中基本数据类型
  7. DISCUZ X3.0 积分增减以及记录
  8. SpringCloud学习笔记024---SpringBoot中使用大部分公用的配置记录
  9. JavaScript从父页面获取子页面的值(子页面又如何访问父页面)
  10. 在Git项目中使用pre-commit统一管理hooks
  11. HTTP请求过程——Chrome浏览器Network详解
  12. android 模拟点击menu键,android编程之menu按键功能实现方法
  13. 批处理文件——BAT学习
  14. matlab 收敛,MATLAB:svds()没有收敛
  15. 漫谈程序员系列:别说“我已经很努力了”
  16. 关于tp-link 路由器
  17. dellr420部署os_Dell R420服务器手动安装centos7系统系列问题
  18. ★深度优先搜索+解空间树+递归,三合一详解
  19. 总体设计--《软件工程导论》
  20. 关于Halcon的离心机试管槽定位

热门文章

  1. DarkMode(4):css滤镜 颜色反转实现深色模式
  2. Linux中的线程同步机制-futex
  3. IOU 破解方法 与 hexedit使用
  4. 终于有大佬对全网最烦人的验证码下手了!
  5. 微信小程序formid存在时效性
  6. python设置字符间距_Python中字符串的常见操作技巧总结
  7. 面试阿里不到半小时被破格录取,问我原因?还不是因为Redis
  8. 十九、Mysql数据库运维实战--SQL1
  9. 2017 第八届蓝桥杯 魔方状态
  10. python爬虫防呆笔记:正则表达式篇之一