VC下双屏显示的实现

主机上另外再连接一个监视器,这样主机就可以检测到两个显示器,设置显示器属性,将屏幕扩展到第二屏(采用扩展模式)。在VC编程时,可以检测到第二屏的信息(甚至多屏),比如屏的个数,各个屏的分辨率,各个屏的句柄,获得了这些信息后,就可以在第二屏上操作了,比如 画图之类。

       在编程中要用到相关的结构体和函数,这些都已经包装好,在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);
 
 }

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
VC QQ魔法表情的实现原理主要包括以下几个步骤: 1. 提取表情:首先,需要将VC QQ中的魔法表情文件进行提取。每个表情都包含多张图片帧,这些帧按照一定的顺序组成表情动画。可以使用图片处理库或者自定义算法将这些表情帧提取出来。 2. 播放表情:在VC QQ中,魔法表情一般是作为动画效果显示在聊天窗口中,因此需要将提取的表情帧按照一定的速率连续播放。可以使用定时器机制来控制表情帧的切换和时间间隔,实现动画的播放效果。 3. 表情交互:在VC QQ中,魔法表情通常是通过用户的特定操作来触发的,例如点击发送按钮、输入特定的命令等。因此,在实现VC QQ魔法表情时,需要根据用户的交互行为来识别触发条件,并在触发时播放相应的表情动画。 4. 表情效果增强:为了增加魔法表情的趣味性和吸引力,可以对表情进行一些特效处理,例如添加音效、逐帧渐变、粒子效果等。这些增强效果可以通过嵌入式音频播放器、图像处理库或者自定义算法来实现。 5. 兼容性考虑:由于VC QQ是一个跨平台的通信工具,因此在实现VC QQ魔法表情时,还需要考虑兼容不同的操作系统、版本和设备。这包括在不同平台上的界面适配、性能优化以及兼容性测试等。 通过以上步骤的实现,可以使VC QQ用户能够使用魔法表情来丰富聊天的表达方式,增加交流的趣味性和互动性。同时,实现过程中还需要注意保护用户隐私,防止恶意代码的注入和表情动画的滥用,确保用户使用的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值