emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图

备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本会用emWin做项目,其他章节可以需要时再参考。

(1) emWin的每个界面都需要一个Framewin/Window窗口控件作为父窗体,就好像Framewin/Window是一个窗体框架,所有控件都放置在这个框架当中,组成父窗体和子控件的连带关系,可以通过父窗体找到子控件,也可以通过子控件找到它的父窗体,Framewin和Window在外观上是有区别的:

(2)Window窗口控件使用比较简单,就好像一个背景一样,也没有所谓的Client区的概念;这里重点说明Framewin窗口控件的使用方法:

上图Framewin窗口控件中绿色部分是Client区域即客户区,以下是emwin说明书关于Framewin及其Client区的说明:
The frame window actually consists of 2 windows;the main window and a child window.The child window is called Client window. Itis important to be aware of this when dealing with callback functions: Thereare 2 windows with 2 different callback functions. When creating child windows,these child windows are typically created as children of the client window;their parent is therefor the client window.
Framewin窗口控件实际上包含2个窗口:主窗口和子窗口,子窗口称为Client窗口,在处理回调函数时理解主窗口和Client窗口的概念是很重要的:两个窗口可以对应两个不同的回调函数;当创建例如按键、编辑框等控件时,这些控件是作为Client窗口的子控件包含在Client窗口中的,因此这些控件的父窗口是Client窗口而非主窗口。

(3)背景图片显示,用BmpCvt.exe工具(在Tool目录下)将BMP图片转成C文件,然后将此C文件加入emWin工程,并在WM_PAINT窗口重绘消息中用GUI_DrawBitmap()函数显示图片即可:
如果是STM32平台,图片数据存到哪里?怎样读取图片数据?储存数据可以考虑NAND-FLASH、SPI-FLASH、NOR-FLASH等等...,至于怎样读取图片数据,这是emWin驱动程序的事情,在这里我们只说怎样做emWin的界面应用程序而已。

源码/软件下载

原文地址:http://blog.51cto.com/neqee/2084535

时间: 2024-10-11 08:07:18

emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图的相关文章

emWin 2天速成实例教程005_控件聚焦和用户消息的使用方法

备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考.  emWin的控件具有聚焦(Focus)功能,聚焦功能对于操作界面来说有时候是不需要的,但有时候是必不可少的.比如需要用键盘操作界面时,没有控件聚焦就没法决定操作哪个控件了,有聚焦的话可以通过TAB键将焦点移动到需要操作的控件,然后执行需要的操作.控件聚焦是emWin内部自己处理的,我们作为用户是不需要理会

emWin 2天速成实例教程004_软件定时器(Timer)和位图片动画

备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考.  emWin的TIMER是一个软件定时器,它以OS_TimeMS变量的值作为定时基准,而OS_TimeMS则通过一个硬件定时器每1ms中断加1,在emWin内部程序不断查询OS_TimeMS的变化实现软件定时.  在很多应用场合,我们需要用到定时器,比如每隔一定时间查询某一事件有没有被触发,每隔一定时间改变

emWin 2天速成实例教程002_多个页面窗口切换

备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考.  用emWin做界面,可以简单理解为每个C文件即对应一个页面,如果要设计多个页面的界面怎么办?生成多个界面C文件并在回调函数的操作触发消息中用隐藏/显示页面函数:WM_HideWindow()和WM_ShowWindow()实现界面切换程序即可.  当界面有多个页面需要切换显示时,有两种方式可以实现:(1)

iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图

iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图 使用ios9中的开关.滑块控件 开关和滑块也是用于和用户进行交互的控件.本节将主要讲解这两种控件. ios9开关 开关控件常用来控制某个功能的开发状态,如蓝牙.GPS.WiFI信号等.如图2.29所示就是一个在WiFI中的开关.开关控件一般使用UISwitch来实现. 图2.29  开关 [示例2-10]以下将使用开发控件实现手电筒的功能.代码如下: import UIKit class ViewController: UIViewCon

《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表

<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两个: THImagex,图像数据控件,v11版,包括488个函数和子程序 THOperatorSetX,操作主接口控件,v11版,包括1929个子程序 以上两大核心控件,已经删除个别delphi内部属性函数,不影响日常使用. 其他控件,基本上,都是为配合两个控件,提供数据类型支持.辅助功能.已经一些特殊应用(

Android实战简易教程-第五十九枪(EventBus小实例-传值、控制其他页控件显示)

页面之间的传值,有android基础的童鞋都会知道,可以通过Intent进行传值,但是动态控制另一个页面控件的显示恐怕这个就不好用了吧,下面我们介绍一个比较好用的框架-EventBus,通过实例介绍它的使用(要引入jar包才能使用EventBus,jar包在源码下载中). 一.介绍一下EventBus 使用EventBus的步骤: 1.新建一个类:作为消息类 /** * */ package com.example.eventbusdemo; /** * @author yayun * @sin

Android实战简易教程-第一枪(Spinner控件详解)

本教程简单实用,大家喜欢的话可以关注我,谢谢! 下拉列表框是一种常见的图形组件,与其他选择组件相比,可以有效的节省屏幕空间,在Android中可以使用android.widget.Spinner类来实现. 下拉列表框中的列表项有以下两种配置方式. 方式一.通过资源文件配置,例如定义一个values\city_data.xml的文件,在定义数据内容时需要使用<string-array>元素指定,定义内容如下: <?xml version="1.0" encoding=&

WPF教程005 - Timeline时间轴控件的实现

效果图: 由于整个控件是实现之后才写的教程,因此这里记录的代码是最终实现后的,前后会引用到其他的一些依赖属性或者代码,需要阅读整篇文章. 1.确定Timeline继承的基类 从效果图中可以看到,时间轴都是由一节一节的子节点组成的,这个很容易联想到我们应该将Timeline继承自ItemsControl.之外仔细观察效果图,可以发现第一项的时间轴节点与其他都不同,而且拆解每一个子项,发现都是由一个圆圈和一个竖线组成,但是最后一项和上面的都不同,少了一个竖线,因此为了控制这些样式,我们需要重新定义一

NVisionXR_iOS教程十 —— 加载视频控件

因为在下一章节我们需要和大家介绍多场景切换功能,所以在本章我们创建一个新的场景,如下图  重写NVScenePlay的生命周期  1.引用头文件#import ''NVVideoWidget.h''  2.在onCreate方法中实例话视频控件  代码:     video = [[NVVideoWidget alloc] initWithScenePlay:self WidgetName:@"video_widget"];      // 添加视频路径,可以是本地路径,也可以是网址(