Windows系统具有强大的绘图功能,可以用来模拟OSD显示。接下来将设计一个简单的模拟显示终端的程序,用于后续显示功能和菜单系统的开发。说明一下,对于Windows下的MFC编程我不怎么了解,只知道一些皮毛东西,所以望大家能指出其中的不足和错误。另外,这次开发的最终目标是建立一个可以移植的菜单系统,所以重点是模拟器端的运行情况而不是Windows程序的运行效率。

为了能比较真实的模拟显示内存(OSD Buffer)到显示终端的过程,用一个和显存等大的数组来模拟OSD Buffer,用一个和显示终端等大小的控件作为模拟显示,用一个和色板等大的数组来模拟硬件色板。
相应的变量为:BYTE OSDBuffer[OSD_BUFFER_LENGTH];m_staEmuDisplay;COLORREF OSDPalette[OSD_COLORNUMBER];

步骤参考如下:
1、建立一个基于对话框的MFC工程;
2、添加一个静态文本框,ID为IDC_STATIC_EmuDisplay,对应的Static变量为m_staEmuDisplay;
3、更新模拟终端的显示与Windows程序自身的重绘显示相互独立处理,故定义一个和静态文本框兼容的成员CDC变量m_cdcEmuDisplay,在OnInitDialog()中进行初始化:
 CBitmap cBitmap;
 CPaintDC  staLCDDC(&m_staEmuDisplay);
 cBitmap.CreateCompatibleBitmap(&staLCDDC,OSD_WIDTH,OSD_HEIGHT);
 m_cdcEmuDisplay.CreateCompatibleDC(&staLCDDC);
 m_cdcEmuDisplay.SelectObject(&cBitmap);
 cBitmap.DeleteObject();
在OnPaint()时重绘静态文本框:
 CPaintDC  EmuDisplayCPaintDC(&m_staEmuDisplay);
 EmuDisplayCPaintDC.StretchBlt(*,&m_cdcEmuDisplay,*,SRCCOPY);
4、定义模拟硬件刷新的成员函数:
UpdateEmuDisplayCDC(COLORREF *pColorPalette)
{
****
m_cdcEmuDisplay.SetPixel(X,Y,pOSDPaletteRGB[ColorData]);
****
}

程序效果如下:


启动时设置显存的内容都为0x22,色板采用的是VGA 标准16色,对应的颜色为绿色,所以整个“显示屏”是绿色。

点击OK键,显存内容会被改变成特定值(实际上一幅图像对应的数组,通过转换工具生成的),相应地,“显示屏”的画面也跟着改变。

顺便说一下,点击OK键“显示屏”的变化不是用Windows的绘图函数实现的,而是用前述的模拟屏幕显示原理来实现。

阅读(2763) | 评论(3) | 复制链接

版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

评论人: kydxjh 发布时间: 2007-4-1 17:44:00
你好!目前我正再做这个,能看看你的运行效果吗
评论人: 作者 发布时间: 2007-1-2 15:16:00
http://my.mofile.com/emu_osd
源码已上传到了我的Mofile空间中Source目录中。
需要说明的是这是最初的版本,现在已做了许多修改,并已经初步完成了菜单的模拟,运行效果可以参考Bin目录中的文件。

转载于:https://www.cnblogs.com/itloverhpu/p/3151560.html

OSD仿真_MFC程序01相关推荐

  1. 微机保护算法matlab编程,微机继电保护matlab算法仿真(有源程序).doc

    微机继电保护matlab算法仿真(有源程序) 微 机 继 电 保 护 算 法 仿 真 电控学院 两点乘算法 matlab中编写的程序 N=12; t=(0:0.02/N:0.02)'; m=size( ...

  2. 包含多个段的程序01 - 零基础入门学习汇编语言29

    第六章:包含多个段的程序01 让编程改变世界 Change the world by program 引言 前面我们写的程序中,只有一个代码段. 现在有一个问题是: 如果程序需要用其他空间来存放数据, ...

  3. matlab2014仿真pid程序,先进 PID 控制及其 MATLAB 仿真 (PDF+程序)

    [实例简介] 目 录 前 言 第 1 章 数字 PID 控制------------------------(1) 1.1PID 控制原理 --------------------------(1) ...

  4. 第一个程序01 - 零基础入门学习汇编语言20

    第四章:第一个程序01 让编程改变世界 Change the world by program 引言 现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成为可执行文件(如:*.exe文件),在操 ...

  5. 51单片机八位数码管1到F动态滚动显示仿真及程序

    51单片机八位数码管1到F动态滚动显示仿真及程序 动态滚动显示仿真及程序 #include<reg51.h> #define uchar unsigned char #define uin ...

  6. 单片机设计资料,仿真、程序、原理图收集好资料分享,stm32、8086、单片机方案

    偶然网上保存的资料,单片机设计资料,仿真.程序.原理图收集的资料转发分享,有需要的拿走. 资源下载地址 百度网盘 基于单片机红外自动触发计时器protues仿真 基于单片机汇编语言抢答器系统设计 基于 ...

  7. 【毕业设计】单片机和stm32设计选题,proteues仿真、程序完整资料-转发分享

    题目:1854 基于单片机智能充电器系统设计仿真 程序 论文 摘要 在我们的日常生活中,手机已经变得越来越重要了.我们经常需要使用手机,打电话.发短信.上网.看电影.听歌.玩游戏等等.随着大屏幕和高主 ...

  8. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  9. FactoryIO+ABB机器人+博图仿真实验程序

    FactoryIO+ABB机器人+博图仿真实验程序 [程序原创]通过三个不同品牌的仿真平台相互通讯,实现一些简单的动作,内容简单,主要演示通讯,起到抛砖引玉的作用,比较适合有动手能力的入门初学者. 软 ...

  10. 太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图

    太阳能自动灌溉系统 利用spwm实现逆变正弦波,仿真,程序,dxp原理图 :38200583640033384y***2

最新文章

  1. oracle建job
  2. eBay:PayPal今年移动支付总额将超35亿美元
  3. 密码学 专题 DH密钥交换算法
  4. php计算代码运行时间与内存使用的一段代码
  5. 深度学习-Tensorflow1.x之Softmax函数代码实现对比在Tensorflow1.x与 Numpy
  6. 各种简单的困难的模板,持续更新
  7. UDP \TCP详详详详解,你想要的全都有(呕心沥血)
  8. Linux 之 光标消失隐藏术
  9. MongoDB 复制集的结构以及基本概念
  10. Netscreen ×××配置(一)---基于策略的点到点×××设置
  11. 环信 java接口实例_环信即时聊天与java后台接口对接demo
  12. 【限流算法】java实现滑动时间窗口算法
  13. 局域网计算机怎样注销用户名,win10系统取消局域网共享用户名密码的解决办法...
  14. 电脑装两个硬盘在计算机只显示一个,插入U盘出现两个盘符怎么解决?一个U盘显示两个盘符解决方法...
  15. 一、注册功能怎么测试
  16. SpringBoot 项目启动时设置 http 代理
  17. UI界面布局有哪些?
  18. php 制作生成海报 图片合成 文字合成 上传到OSS
  19. 支持python的量化交易平台
  20. WLAN 无线网络 09 - 管理帧 zz

热门文章

  1. 缓冲区提前释放,导致H264保存及播放错误
  2. Floyd算法 求多源汇最短路
  3. jmail mysql_教你怎么使用Jmail发送匿名的邮件(不要身份认证)
  4. 计算机虚拟仪器技术与测试技术相关的概念,虚拟测试技术概念辨析.pdf
  5. html做table某一列的合计,Jquery、js计算table列合计
  6. 什么工作经常出差_职场妈妈困扰: 经常出差, 工作孩子该怎么选择?
  7. linux 查看pgsql端口,如何通过Linux脚本检查是否已安装PostgreSQL?
  8. mysql触发器信号给qt_利用回调函数实现DLL与Qt主程序的数据交互,进一步实现对Qt主程序中的信号触发 - zcabcd123的专栏 - 博客频道 - CSDN.NET...
  9. 25.211 -- 物理层信道
  10. 【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路 1