基于WINDOWS 32API封装的显示器类: (2) 源文件

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 06:36 点击:

  1#include "stdafx.h"
  2#include "monitor.h"
  3#include <stack>
  4#include <cassert>
  5using namespace std;
  6
  7/***************************************************************************************
  8   2009-12-5 当显示器不存在时,要删除窗口记录信息
  9   2009-12-8 改为使用相对于父窗口的位置来恢复子窗口,这样当父窗口位置和大小变化时,
 10             子窗口都能正确恢复
 11****************************************************************************************/
 12
 13//CMonitor实现
 14CMonitor::CMonitor(HMONITOR hMonitor, DWORD dwIndex):
 15m_hMonitor(hMonitor),
 16m_dwIndex(dwIndex)
 17{
 18    MONITORINFOEX mi;
 19    mi.cbSize = sizeof( mi );
 20    ::GetMonitorInfo( m_hMonitor, &mi );
 21    m_strName = mi.szDevice;
 22}
 23
 24//获取显示器的整个区域
 25void CMonitor::GetMonitorRect(RECT& rect) const
 26{
 27    MONITORINFO mi;
 28    RECT        rc;
 29    mi.cbSize = sizeof( mi );
 30    ::GetMonitorInfo( m_hMonitor, &mi );
 31    rc = mi.rcMonitor;
 32
 33    ::SetRect(&rect, rc.left, rc.top, rc.right, rc.bottom );
 34}
 35//获取显示器的工作区域
 36void CMonitor::GetWorkAreaRect(RECT& rect) const
 37{
 38    MONITORINFO mi;
 39    RECT        rc;
 40    mi.cbSize = sizeof( mi );
 41    ::GetMonitorInfo( m_hMonitor, &mi );
 42    rc = mi.rcWork;
 43
 44    ::SetRect(&rect, rc.left, rc.top, rc.right, rc.bottom );
 45}
 46//获取显示器的像素高度
 47DWORD CMonitor::GetPixelHeight() const
 48{
 49    DEVMODE devmode;
 50    devmode.dmSize = sizeof(DEVMODE);
 51    EnumDisplaySettings(m_strName.c_str(), ENUM_CURRENT_SETTINGS, &devmode);
 52    return devmode.dmPelsHeight;
 53}
 54//获取显示器的像素宽度
 55DWORD CMonitor::GetPixelWidth() const
 56{
 57    DEVMODE devmode;
 58    devmode.dmSize = sizeof(DEVMODE);
 59    EnumDisplaySettings(m_strName.c_str(), ENUM_CURRENT_SETTINGS, &devmode);
 60    return devmode.dmPelsWidth;
 61}
 62//获取显示器每单位像素的位数
 63DWORD CMonitor::GetBitsPerPixel() const
 64{
 65    DEVMODE devmode;
 66    devmode.dmSize = sizeof(DEVMODE);
 67    EnumDisplaySettings(m_strName.c_str(), ENUM_CURRENT_SETTINGS, &devmode);
 68    return devmode.dmBitsPerPel;
 69}
 70//获取显示器的显示频率
 71DWORD CMonitor::GetDisplayFrequency() const
 72{
 73    DEVMODE devmode;
 74    devmode.dmSize = sizeof(DEVMODE);
 75    EnumDisplaySettings(m_strName.c_str(), ENUM_CURRENT_SETTINGS, &devmode);
 76    return devmode.dmDisplayFrequency;
 77}
 78//获取显示器的左上角X位置
 79DWORD

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • dos命令原来也能这样用?允许查找未知子目录指定文件
    •  windows的磁盘操作之八——格式化分区的思考
    • windows篇-第三章 安装和配置DNS服务器
    • windows篇-第二章 安装和配置Web服务器
    • windows篇-第一章 windows server 2008安装和简单配置
    •  windows server 2003断开远程之后自动注销用户
    • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
    • Windows 2008 R2 SP1部署WSUS 3.0 SP2
    • windows 2008 rodc扩展

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1