EnumDisplayMonitors—多屏显示的实现
来源:互联网 发布:大数据分析典型案例 编辑:程序博客网 时间:2024/06/07 16:08
在编程中要用到相关的结构体和函数,这些都已经包装好,在multimom.h头文件中,该头文件VC自带有。在要用的的地方包含该头文件,注意在包含前面要加上一句宏定义:#define COMPILE_MULTIMON_STUBS
几个重要的结构体和函数
EnumDisplayMonitors( ) 该函数对当前用户系统中所包含的显示器进行枚举。应用程序就是通过与该函数交流得知,当前用户系统中
所拥有的显示器个数以及其名称。
MonitorInfoex 和MonitorInfo 。在这两个结构中保存着相应显示器的相关信息,如坐标、是否为主显示器等。
GetMonitorInfo ( ) 取得指定显示器的相关信息,如物理显示区大小等。
MonitorFromPoint ( ) 取得指定点所在的显示器句柄。
MonitorFromRect ( ) 取得指定矩形所在的显示器句柄。
MonitorFromWindow( ) 取得指定窗口所在的显示器句柄
MonitorEnumProc( ) 。当应用程序调用EnumDisplayMonitors ( )查询显示器个数时,系统自动为每一个显示器调用一次该函数。应用程序可以依此判断显示器的个数、位置及显示区域的大小等信息。
编程实现,获得第二屏信息,在主屏上点击一按钮,在第二屏上显示一幅图像。
在应用程序初始化时,调用EnumDisplayMonitors(NULL,NULL,MonitorEnumProc,0);,该函数枚举显示器,得到显示器信息,方便以后调用。其中MonitorEnumProc,是一回调函数,这个回调函数是要自己写的,
/*********************************************************
函数名:MonitorEnumProc()
输入参数:HMONITOR hMonitor ---显示器句柄
HDC hdcMonitor ----显示器DC句柄
LPRECT lprcMonitor-----
LPARAM dwData-----EnumDisplayMonitors传来的数据
返回:bool
功能:若返回为真,EnumDisplayMonitors继续枚举,
若返回为假,EnumDisplayMonitors停止枚举,从而获得显示器信息
将显示器个数保存在numScreen,分辨率信息保存在rect
**********************************************************/
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,
HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
static BOOL first = TRUE; //标志
//保存显示器信息
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);
//获得显示器信息,将信息保存到monitorinfo中
GetMonitorInfo(hMonitor, &monitorinfo);
//若检测到主屏
if(monitorinfo.dwFlags == MONITORINFOF_PRIMARY)
{
if(first) //第一次检测到主屏
{
first = FALSE;
numScreen = 1;
//将显示器的分辨率信息保存到rect
rect[0] = monitorinfo.rcMonitor;
return TRUE;
}
else //第二次检测到主屏,说明所有的监视器都已经检测了一遍,故可以停止检测了
{
first = TRUE; //标志复位
return FALSE; //结束检测
}
}
rect[numScreen] = monitorinfo.rcMonitor;
numScreen++;
return TRUE;
}
创建对话框,通过MoveWindow 函数将对话框移动到第二屏上即可
if(numScreen == 2)
{
CSecondScr *pDlg = new CSecondScr;
pDlg->Create (IDD_DIALOG1,this);
pDlg->ShowWindow (SW_SHOW);
pDlg->MoveWindow (rect[1].left ,rect[1].top ,rect[1].Width (),rect[1].Height (),TRUE);
}
原文来自:http://charmvi.blog.163.com/blog/static/1288080392011102195649554/
- EnumDisplayMonitors—多屏显示的实现
- EnumDisplayMonitors—多屏显示的实现
- EnumDisplayMonitors—多屏显示的实现
- EnumDisplayMonitors—多屏显示的实现
- EnumDisplayMonitors—多屏显示的实现
- 实现多页文本的显示
- 接口的显示实现
- 接口的显示实现
- 显示接口的实现
- 请大侠指教uiviewcontroller中添加了scrollview来实现多屏显示的的问题
- 实现非模态对话框的显示
- 接口成员的显示实现
- 歌词显示的技术实现
- 实现用户等级的显示
- GridView实现性别的显示
- js实现的万年历显示
- TextView显示更多的实现
- 柔性显示实现的关键技术
- linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
- 第十一周上机任务项目3
- boost::share_ptr的缺陷
- Android 4.3 蓝牙新特性
- 继承初体验
- EnumDisplayMonitors—多屏显示的实现
- 修改CPU INFO
- 三分搜索
- 第九周上机任务(二)
- CString使用大全
- 视图和安全性检测
- 悬浮框保证在中间js
- 树状数组-地兵布阵
- 致流逝的青春--IT人篇