• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 软件下载 > 正文

    通用分屏框架窗口软件设计与实现

    来源:六七范文网 时间:2023-06-11 01:45:09 点击:


    打开文本图片集

    摘要:Windows平台上面缺乏一款能够统一整合各类应用程序窗口的通用软件,因此文中根据Windows操作系统下应用程序运行的消息机制,通过注入挂载钩子函数,截获并处理相关消息,提出了分屏框架窗口软件的开发设计思路,并给予了相应的实现算法。

    关键词:消息;钩子;共享数据段;分屏;Splash Window

    中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)14-0064-02

    Abstract:On Windows system platform, there is a lack of application that can integrate all kinds of software running windows, this paper analysis application running message theory and hook mechanism, provide design ideas of ‘snap views’ software, and give the corresponding key algorithms.

    Key words:message; hook; share data seg; sap view; splash window

    目前,在Windows平台上面,各个领域、各种功能的应用软件数不胜数,有很多软件需要搭配使用,因此,大量工作需要在不同的应用窗口中切来切去,影响工作效率,为解决这个问题,微软从Win8开始,为宽屏设备用户提供的“分屏视图(Snap Views)”功能,可以将两个需要常在视线内的应用同时并排放在Win8屏幕上便于查看。不过Win8系统中的“分屏视图(Snap Views)”功能有诸多限制,比如屏幕分辨率必须在1366×768像素以及以上才能使用,而且只能有两个应用同时显示等等。本文探讨了如何实现一个通用的软件可以将不同的应用程序整合到同一个框架窗口。

    1 系统分析

    如果要整合各种Windows窗口,必须要深入了解Windows应用程序的运行机制。

    1.1 Windows应用程序运行的机制

    Windows应用程序是基于消息驱动的。在Windows中发生的事件都可以用消息来表示。针对每一个正在执行的Windows应用程序,Windows系统为其建立一个应用程序消息队列,Windows系统将属于该程序的各种消息推送到这个队列中,应用程序中的“Message Loop”的消息循环处理代码,用来从消息队列中依次取出消息并根据其中信息将其分发到相应的“Windows Process”窗口处理函数中去。如图1所示。

    1.2 Windows应用程序窗口对象关系

    应用程序窗口对象之间存在四种关系,即拥有者(owner)、父亲(parent)、孩子(child)、兄弟(sibling)。如果一个窗口的parent非空,则parent和它之间就建立了父子关系。父子关系决定了:

    1)窗口在屏幕上面的显示位置。父窗口提供了用来定位子窗口的坐标系统,一个子窗口只能显示在它的父窗口的客户区中,之外的部分将被裁减。这个裁减法则决定了如果父窗口不可见,则子窗口肯定不可见。如果父窗口移动到了屏幕之外,子窗口也一样。

    2)通常情况下、窗口之间消息的传递是和窗口关系相关的,通知消息会首先发送给父窗口,然后再转发到各个子窗口。

    3)当父窗口被隐藏时,它的所有子窗口也被隐藏。

    4)父窗口被销毁的时候,它所拥有的子窗口都会被销毁。

    从以上的分析可知,要整合控制Windows下面各种应用程序,必须实现对应用程序消息的截获、分析和处理。要做到这一点,这里主要通过两种手段,一是指定应用程序的父窗口为本程序框架窗口。二是利用Windows钩子机制截获应用程序的消息进行处理。

    2 系统设计与实现

    软件主要分为两个部分程序,一个是窗口主界面程序,主要负责展示和接收用户输入的消息。另外一个是动态链接库,负责钩子函数的注入和消息的截获处理。

    2.1 主窗口程序主要运行流程(如图2所示)

    其中需要注意的几个地方是:

    1)在枚举查找应用程序窗口的时候,一定要找到应用程序的顶级窗口,不要错误捕获应用程序中的子窗口。

    2)有些应用程序启动较慢,所以在启动的时候,有启动窗口(Splash Window),系统应该能够自动识别,跳过启动窗口。

    具体相关代码如下:

    3 结束语

    本文通过对Windows下应用程序运行机制和消息机理的分析,探讨了实现通用的分屏软件的方法,该软件目前运行良好,基本能够满足日常工作需求,为通过一个框架窗口整合不同的应用程序提供了较好的解决方案。

    参考文献:

    [1] Charles Petzold. Windows程序设计[M]. 北京: 清华大学出版社, 2010.

    [2] Jeffrey Richter. Windows核心编程[M]. 北京: 机械工业出版社, 2008.

    [3] Mark Russinovich. 深入解析Windows操作系统[M]. 北京: 人民邮电出版社, 2012.

    [4] 张银奎. 软件调试[M]. 北京: 电子工业出版社, 2008.

    [5] 毛德操. Windows内核情景分析[M]. 北京: 电子工业出版社, 2009.

    [6] 潘爱民. Windows内核原理与实现[M]. 北京: 电子工业出版社, 2010.

    [7] 侯俊杰. 深入浅出MFC[M]. 武汉: 华中科技大学出版社, 2001.

    [8] Jeff Prosise. MFC Windows程序设计[M]. 北京: 清华大学出版社, 2007.

    推荐访问:框架 窗口 通用 设计 软件