Full screen检测方法
来源:互联网 发布:编程类书籍 编辑:程序博客网 时间:2024/04/28 18:29
Windows下经常会遇到这样一个问题,检测是否有应用程序处于全屏状态,如果有,则需要做一些特别动作。
笔者尝试过不同的方法,
方法一,检测四个角点的hWnd,看他们是否是同一个window,通常对于播放器这种应用程序处于全屏时,会带有一个进度控制条,导致了四个角点属于两个不同的window。
方法二,注册Desktop Toolbars,当有全屏幕程序打开或者关闭的时候都会有ABN_FULLSCREENAPP消息通知,在收到后作处理即可。
下面分别列举这两种方法:
方法一:
bool IsFullScreen(){ HWND pWnd1 = NULL; HWND pWnd2 = NULL; HWND pWnd3 = NULL; HWND pWnd4 = NULL; int iCx=GetSystemMetrics(SM_CXSCREEN); int iCy=GetSystemMetrics(SM_CYSCREEN); POINT pt1; pt1.x = 1; pt1.y = 1; POINT pt2; pt2.x = 1; pt2.y = iCy-1; POINT pt3; pt3.x = iCx-1; pt3.y = 1; POINT pt4; pt4.x = iCx-1; pt4.y = iCy-1; pWnd1 = WindowFromPoint(pt1); pWnd2 = WindowFromPoint(pt2); pWnd3 = WindowFromPoint(pt3); pWnd4 = WindowFromPoint(pt4); if (pWnd1 == pWnd2 && pWnd2 == pWnd3 && pWnd3 == pWnd4) { return true; } return false;}
事实上,除了IE的full screen,上述方法都没有试成功过。
方法二:
//以dialog为例xdlg.hclass cxdlg{// ...APPBARDATA m_abd;// ...};xdlg.cpp
#define UM_APPBARIDWM_USER+1BEGIN_MESSAGE_MAP(cxdlg, CDialogEx)// ... ON_WM_POWERBROADCAST()// ...END_MESSAGE_MAP()BOOL cxdlg::OnInitDialog(){// ...memset(&m_abd, 0, sizeof(APPBARDATA));m_abd.cbSize = sizeof(APPBARDATA); m_abd.hWnd = this->m_hWnd;m_abd.uCallbackMessage = UM_APPBARID; ::SHAppBarMessage(ABM_NEW, &m_abd); // ...}LRESULT cxdlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){// TODO: Add your specialized code here and/or call the base classif (UM_APPBARID == message) {TRACE(TEXT("==><== Get UM_APPBARID ... /n"));switch((UINT)wParam) { case ABN_FULLSCREENAPP: {if (TRUE == (BOOL)lParam){TRACE(TEXT("GetFullScreen On/n"));}else{TRACE(TEXT("GetFullScreen Off/n"));}}break;default:break;} }
return CDialogEx::WindowProc(message, wParam, lParam);}
- Full screen检测方法
- Full screen dialogs
- android full screen
- android full screen
- mplayer full screen
- vim full screen
- android full screen
- android full screen
- Full Screen Web Apps
- full screen video background
- 解决NavigationView full screen
- Pocket PC Dialog Full Screen
- Pocket PC Dialog Full Screen
- Using Immersive Full-Screen Mode
- Html5之Full Screen API
- Supporting Full Screen Mode with Silverlight
- DX: Full Screen GUI Development 1
- Disabling Shortcut Keys in Full Screen mode
- 保存一点android面试笔试资料
- ODU恢复测试二:drop表恢复(troubleshoot版)
- linux多线程学习笔记
- mysql 编译安装
- maven 深入了解
- Full screen检测方法
- 黑马程序员_交通灯管理系统小结
- 数据库基础(面试常见题)
- Struts2和Struts1有什么区别
- 雁过留痕
- asp中javascript或jquery如果在body中 且需要页面元素 则需要放在最后
- RHEL学习
- 5.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端domain
- Spring入门笔记