WinCE UI库开发实践
woll2woll firepower 实例
woll2woll firepower 实例Woll2Woll FirePower 是一个功能强大的开发工具,可帮助开发人员更高效地构建和部署应用程序。
本文将介绍一些关于Woll2Woll FirePower 实例的信息,介绍其功能和应用领域,并提供具体的实例说明。
一、Woll2Woll FirePower 概述Woll2Woll FirePower 是一个用于快速开发 Windows GUI 应用程序的工具包。
它提供了丰富的组件和控件,使开发人员能够轻松创建具有高度定制化的用户界面。
FirePower 组件库包括了各种常见的 UI 控件,如按钮、输入框、列表框等,还提供了一些特殊控件,如图表、数据网格等,以满足各种应用需求。
二、Woll2Woll FirePower 的功能1. 可视化设计:FirePower 提供了直观的界面设计工具,使开发人员可以通过拖拽和放置控件的方式快速构建用户界面。
开发人员可以自由调整控件的外观和布局,实时预览效果。
2. 数据绑定:FirePower 支持数据绑定功能,在数据驱动的应用中非常有用。
通过简单的配置,开发人员可以将控件与数据源关联起来,实现动态数据展示和交互。
3. 命令框架:FirePower 提供了灵活的命令框架,使开发人员能够轻松管理应用程序的命令和操作。
通过命令框架,开发人员可以将用户操作和相关的业务逻辑进行解耦,实现更好的代码组织和维护。
4. 主题和样式:FirePower 提供了丰富的主题和样式选择,开发人员可以根据应用需求进行定制。
同时还支持自定义主题和样式,使应用界面更加个性化。
三、Woll2Woll FirePower 的应用领域Woll2Woll FirePower 可广泛应用于各种类型的 Windows 应用程序开发,特别适用于以下场景:1. 商业应用:FirePower 提供了丰富的商业控件和功能,如数据网格、图表等,可用于构建管理和分析类应用。
WINIO库详细介绍
由于Windows对系统底层操作采取了屏蔽的策略,因而对用户而言,系统变得更为安全,但这却给众多的硬件或者系统软件开发人员带来了不小的困难,因为只要应用中涉及到底层的操作,开发人员就不得不深入到Windows的内核去编写属于系统级的设备驱动程序。
对并行口的读写操作就是如此,由于Windows对系统的保护,绝对不允许任何的直接I/O动作发生,所以必须带上*.dll、*.sys或*.vxd文件,这些文件用来让操作系统知道有一个特定的I/O可能会被调用。
系统开机后,这些文件中的内容就会加载到内存中,一旦有对应的动作发生,就会引发I/O的实际动作。
本文只是介绍并行口作为数字I/O口的使用,不在于介绍并行I/O口驱动的编写。
故本文中直接使用由Yariv Kaplan 编写的WinIo 库,它有如下特点:WinIo 库通过使用内核模式下设备驱动程序和其它一些底层编程技巧绕过Windows 安全保护机制,允许32位Windows 程序直接对I/O 口进行操作。
支持Windows 9x、Windows NT、Windows2000、WindowsXP环境;在Windows NT/2000/XP下,允许非Administrator 用户应用WinIo 应用程序;不支持中断。
注意事项:使用这个类代码时请确保不要与其它使用常规Win32 调用操作并行端口的程序发生冲突。
WinIo库在VC应用程序中的使用(WinIo库下载)为了在VC中能正常使用WinIo库,必须按以下步骤进行配置:(1):将WinIo.dll、WinIo.sys、WINIO.VXD三个文件放在程序可执行文件所在目录下;(2):将WinIo.lib添加到工程中,WinIo.lib及winio.h文件必须放在工程目录下;(3):在StdAfx.h头文件中加入#include "winio.h"语句;(4):调用InitializeWinIo函数初始化WinIo驱动库;(5):调用读写IO口的GetPortVal或SetPortVal函数;(6):调用ShutdownWinIo函数;在非管理员权限下运行,必须首先完成以下步骤:(1):将WinIo.dll、WinIo.sys、WINIO.VXD三个文件放在任一WinIo应用程序可执行文件所在目录下;(2):以管理员或其它具有管理员权限的用户身份登陆;(3):调用InstallWinIoDriver函数,第一个参数设置为WinIo.sys文件所在目录路径,第二个参数设置为false;(4):重新启动系统;(5):以普通用户身份登录,现在可以调用WinIo库函数;(6):当不再需要WinIo库时,可以再次以管理员身份或其它具有管理员权限的用户身份登陆系统,调用RemoveWinIoDriver卸载该库;WinIo库中几个函数说明:(1):初始化与终止bool _stdcall InitializeWinIo();void _stdcall ShutdownWinIo();(2):安装与卸载bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false); bool _stdcall RemoveWinIoDriver();(3):读写I/O口bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);GetPortVal 函数从指定端口读取一个BYTE/WORD/DWORD类型的值;wPortAddr是指定一个端口地址值;pdwPortVal为指向一双字节型变量的指针,该变量存储从wPortAddr端口读取的值;bSize指定读取字节数,值可以为1,2或4。
ARM嵌入式WINCE实践教程_图文.
ARM 嵌入式WINDOWS CE实践教程ARM 嵌入式WINDOWS CE实践教程 CVT-PXA270华中科技大学国家电工电子教学基地武汉创维特信息技术有限公司ARM 嵌入式WINDOWS CE实践教程前言《ARM 嵌入式WINDOWS CE实践教程》是ARM 嵌入式技术系列教程之一。
该教程教材采用华中科技大学和武汉创维特信息技术有限公司联合研制的CVT-PXA270系列嵌入式教学实验系统作为教学实践平台。
Windows CE 嵌入式操作系统是目前嵌入式主流操作系统之一,它以超强的性能、友好的Windows 人机界面以及标准化、可视化的软件开发过程被越来越多地使用在手机、PDA 等产品中,本书结合XSCALE 嵌入式处理器的特点,介绍了在其上进行Windows CE开发的过程和方法。
本书详细地讲解了Windows CE BSP开发平台Platform Build 5.0的建立过程、Windows CE BSP板级支持包的开发、驱动程序的设计以及基于Embedded Visual C++嵌入式Windows CE应用程序的设计和开发等,内容覆盖Windows CE开发的全过程,它不仅可以作为嵌入式Windows CE开发的初学者作为实践教程,而且对于Windows CE 开发人员也有一定的参考价值。
ARM 嵌入式WINDOWS CE实践教程目录第1章安装Windows CE BSP........................................11.1 安装WINDOWS CE5.0..............................................................................................11.2 安装WINDOWS CE 5.0 BSP......................................................................................2第2章 Windows CE 内核定制实验.................................. 42.1 创建和编译新项目...................................................................................................... 42.2 运行image 文件........................................................................................................ 172.2.1 设置并建立tftp 服务器.................................................................................. 182.2.2 通过uboot 下载nk.nb0................................................................................... 18第3章 WINCE和桌面系统通讯实验........................... 243.1 硬件连接.................................................................................................................. 243.2 WINCE端设置.......................................................................................................... 243.3 activeSync安装.......................................................................................................... 243.4 USB驱动程序安装.................................................................................................... 253.5 通讯.......................................................................................................................... 27第4章 Windows CE 应用程序实验.............................. 284.1 下载并安装Microsoft eMbedded Visual C++4.0....................................................284.2 建立HelloWorld 工程................................................................................................ 314.3 下载并运行HelloWorld............................................................................................ 354.4 调试HelloWorld....................................................................................................... 38第5章 Windows CE 多媒体播放实验.......................... 465.1 安装媒体播放器...................................................................................................... 465.2 建立WINCE 和桌面系统之间的通讯连接............................................................. 485.3 拷贝视频文件到WINCE My Documents................................................................495.4 播放视频文件.......................................................................................................... 49ARM 嵌入式WINDOWS CE实践教程第6章 Windows CE 驱动程序实验.............................. 516.1 WINCE驱动程序模型.............................................................................................. 516.2 本机设备驱动程序的系统结构.............................................................................. 526.3 流接口驱动程序的系统结构.................................................................................. 526.3.1 设备管理器................................................................................................... 526.3.2 设备文件名................................................................................................... 546.3.3 流接口驱动程序入口函数........................................................................... 546.4 流接口驱动程序开发.............................................................................................. 576.5 流接口驱动程序调用实例...................................................................................... 676.6 运行.......................................................................................................................... 68第7章 Windows CE 接口实验..................................... 697.1 CVT-PXA270 跑马灯实验...................................................................................... 697.2 CVT-PXA270 数码管实验...................................................................................... 847.3 CVT-PXA270 进程编写实验.................................................................................. 907.4 CVT-PXA270 多线程实验...................................................................................... 927.5 CVT-PXA270 步进电机实验.................................................................................. 947.6 CVT-PXA270 LCD 控制实验.............................................................................1027.7 CVT-PXA270 录放音实验.................................................................................1047.8 CVT-PXA270 简单多媒体实验......................................................................... 1057.9 CVT-PXA270 读写文件实验............................................................................. 106第8章 Windows CE 以太网驱动程序实验................ 1108.1 CVT-PXA270网卡................................................................................................ 1108.2 LAN91C111网卡驱动程序中断处理................................................................... 1108.3 LAN91C111网卡驱动程序硬件地址................................................................... 1118.4 网络连接的添加................................................................................................... 1118.6 网络驱动程序编译和测试................................................................................... 114第9章 GPS模块导航实验........................................ 1159.1 系统简介............................................................................................................... 1159.2 系统设置............................................................................................................... 1159.3 硬件设置............................................................................................................... 1169.4 实验步骤............................................................................................................... 118ARM 嵌入式WINDOWS CE实践教程第1章安装Windows CE BSP1.1 安装WINDOWS CE 5.0本节讲述如何安装Windows CE 5.0以及Platform Builder。
Windows窗体程序的开发实验报告
精通C#与.NET4.0数据库开发实验报告实验题目:Windows窗体程序的开发专业计算机科学与技术学生XX班级学号教师指导单位日期一、实验目的1.学会在Visual Studio 2021中创立和运行窗体程序。
2.掌握Windows窗体的根本操作。
3.学会使用常用的Windows控件。
4.学会使用菜单和工具栏以及通用对话框。
二、实验环境.NET框架开发环境Visual Studio 2021三、实验内容例5-1、2:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid AddInputToLog(string input){this.tbLog.AppendText("\r\n" + input);this.tbLog.ScrollToCaret( );}privatevoid btnSubmit_Click(object sender, EventArgs e) {string input = this.tbInput.Text;this.AddInputToLog(input);this.tbInput.Clear( );}}例5-3、4:源代码:publicpartialclass FrmMain : Form{public FrmMain( ){Initializeponent( );}privatevoid btnSetProp_Click(object sender, EventArgs e){this.Text = "测试对话框";this.FormBorderStyle = FormBorderStyle.FixedDialog;this.BackColor = Color.Gray;this.WindowState = FormWindowState.Normal; this.MinimizeBox = false;this.Height = 200;this.Width = 400;this.TopMost = true;}private FrmMain _CurrFrm = null;privatevoid btnCreate_Click(object sender, EventArgs e){if(this._CurrFrm == null){this._CurrFrm = new FrmMain( );this._CurrFrm.Show( );}else{this._CurrFrm.Activate( );}}privatevoid btnClose_Click(object sender, EventArgs e){if (this._CurrFrm !=null){this._CurrFrm.Close( );this._CurrFrm = null;}}privatevoid FrmMain_Load(object sender, EventArgs e){}}例5-5:源代码:// label1参数设置bel1.AutoSize = true;bel1.BackColor = System.Drawing.Color.Red;bel1.Font = new System.Drawing.Font("楷体_GB2312",12F, System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel1.ForeColor = System.Drawing.Color.White;bel1.Location = new System.Drawing.Point(68, 43); = "label1";bel1.Size = new System.Drawing.Size(232, 16);bel1.TabIndex = 0;bel1.Text = "红底白字,楷体小四号, 无边框";bel1.Click += new System.EventHandler(bel1_Click);// label2参数设置bel2.AutoSize = true;bel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;bel2.Font = new System.Drawing.Font("幼圆",15F,System.Drawing.FontStyle.Bold,System.Drawing.GraphicsUnit.Point,((byte)(134)));bel2.Location = new System.Drawing.Point(49, 79); = "label2";bel2.Size = new System.Drawing.Size(289, 22);bel2.TabIndex = 1;bel2.Text = "幼圆小三粗体, Single边框";bel2.Click += new System.EventHandler(bel2_Click); 例5-6:源代码:publicpartialclass Form1 : Form{privateint _Value = 0;//btnShowMsg的Click事件处理函数privatevoid btnShowMsg_Click(object sender, EventArgs e) {MessageBox.Show(string.Format("现在需要: {0} ", this._Value));}//“多一点〞按钮Click事件处理函数privatevoid btnAdd_Click(object sender, EventArgs e){this._Value++;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}//“少一点〞按钮Click事件处理函数privatevoid btnSub_Click(object sender, EventArgs e){this._Value--;this.lbRes.Text = string.Format("现在需要: {0} ", this._Value);}}例5-7:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid buttons_CheckedChanged(object sender, EventArgs e) {string weeks = "";weeks += ckbWeek1.Checked ? "星期一" :"";weeks += ckbWeek2.Checked ? "星期二" : "";weeks += ckbWeek3.Checked ? "星期三" : "";weeks += ckbWeek4.Checked ? "星期四" : "";weeks += ckbWeek5.Checked ? "星期五" : "";weeks += ckbWeek6.Checked ? "星期六" : "";weeks += ckbWeek7.Checked ? "星期日" : "";string sport = "";sport += rbSword.Checked ? "击剑" : "";sport += rbJump.Checked ? "跳水" : "";sport += rbTiCao.Checked ? "体操" : "";string jiangpai = "";jiangpai += rbGold.Checked ? "金牌" : "";jiangpai += rbSliver.Checked ? "银牌" : "";jiangpai += rbTong.Checked ? "铜牌" : "";this.lbHint.Text = weeks + sport + jiangpai;}}例5-8:源代码:publicpartialclass Form1 : Form{privatevoid Form1_Load(object sender, EventArgs e){this.mtbMobile.Mask = ""; //手机:13后面9个必填数字this.mtbPhone.Mask = "00"; //:4位必填区号,7或8位?this.tbName.Text = "";this.tbUsers.Text = "";}privatevoid btnAdd_Click(object sender, EventArgs e){string usr = string.Format("<{0}>:<{1}>:<{2}>", //产生用户信息this.tbName.Text,this.mtbPhone.Text,this.mtbMobile.Text);//添加到用户记录文本框¨°this.tbUsers.AppendText(usr + System.Environment.NewLine);this.mtbMobile.Text = ""; //清空用户信息this.mtbPhone.Text = "";this.tbName.Text = "";}}例5-9:源代码:publicpartialclass Form1 : Form{public Form1( ){Initializeponent( );}privatevoid Form1_Load(object sender, EventArgs e){//设置cmbHouXuan只能从boBox中的已有候选值选择this bHouXuan.DropDownStyle = boBoxStyle.DropDownList; //lstResult只能执行单项选择,并且对所有值进展排序this.lstResults.SelectionMode = SelectionMode.One;this.lstResults.Sorted = true;this.GeneratebItems( ); //产生boBox中D的可选项}privatevoid GeneratebItems( ){this bHouXuan.Items.Clear( ); //移除原有的数据Random rd = new Random();for (int i = 0; i < 10; i++) //随机生成10个新的数据{string item = string.Format("Item-{0:X8}", rd.Next( ));this bHouXuan.Items.Add(item); //添加到boBox中}this bHouXuan.SelectedIndex = 0; //默认选中第一条}//重新生成boBox中的侯选项privatevoid btnFresh_Click(object sender, EventArgs e){this.GeneratebItems( ); //重新生成bBox中的候选项}//将bBox中选中值¦添加到ListBox中Dprivatevoid btnAddOne_Click(object sender, EventArgs e){//通过boBox.SelectedItem获取当前选中的候选项,然后添加到ListBox中Dstring item = (string)this bHouXuan.SelectedItem;this.lstResults.Items.Add(item);}//从ListBox中移除当前选中项privatevoid btnRemoveOne_Click(object sender, EventArgs e){if (this.lstResults.SelectedIndex >= 0) //如果当前ListBox中有选中条目,移除它{this.lstResults.Items.RemoveAt(this.lstResults.SelectedIndex);}}//从ListBox中移除所有项privatevoid btnRemovAll_Click(object sender, EventArgs e){this.lstResults.Items.Clear( );}}例5-10:源代码:privatevoid btnMsgBox_Click(object sender, EventArgs e){MessageBox.Show("这是第一个消息框,只有确认按钮");//显示最简单的MessageBoxMessageBox.Show("这是二个消息框¨,有标题,只有确认按钮", "第二个消息框");//显示有文本和标题的MessageBox//显示具有文本、标题、确定和取消按钮的MessageBoxMessageBox.Show("这是第三个消息框¨,有标题,只有确认和¨取消按钮","第三个消息框", MessageBoxButtons.OKCancel);//显示具有文本、标题、确定和¨取消按钮、告警图标的MessageBox MessageBox.Show("这是第四个消息框¨,有标题,只有确认和取消按钮,告警图标", "第四个消息框", MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);}例5-11:源代码:private void btnOpenFile_Click(object sender, EventArgs e){OpenFileDialog ofdlg = new OpenFileDialog( );//创立OpenFileDialog对象ofdlg.Filter = "文本文件(*.txt)|*.TXT|Word文件(*.doc)|*.DOC"; //只选择TXT和DOC 扩展名文件ofdlg.Title = "选择文本文件或Word文件"; //设置对话框的标题if(ofdlg.ShowDialog() == DialogResult.OK) //显示对话框,并等待返回{this.tbOpenFileName.Text = ofdlg.FileName; //如果用户选择了文件那么显示到界面}else{this.tbOpenFileName.Text = "还没有选择要翻开的文件"; //没有选择文件,那么显示默认提示}}例5-12:源代码:private void btnSetColor_Click(object sender, EventArgs e){ColorDialog cdlg = new ColorDialog( ); //创立ColorDialog对象cdlg.Color = btnSetColor.ForeColor; //设置默认颜色为btnSetColor当前前风光if (cdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetColor.ForeColor = cdlg.Color; //选择了新的颜色,那么更新btnSetColor前风光}}例5-13:源代码:private void btnSetFont_Click(object sender, EventArgs e){FontDialog fdlg = new FontDialog( ); //创立FontDialog对象fdlg.Font = btnSetFont.Font; //设置默认字体为btnSetFont当前字体if (fdlg.ShowDialog( ) == DialogResult.OK) //显示对话框,并等待返回{this.btnSetFont.Font = fdlg.Font; //选择了新的字体,那么更新btnSetFont的字体}}四、实验总结通过此次实验,我学会了在Visual Studio 2021中创立和运行窗体程序;也掌握了Windows窗体的根本操作;学习使用了常用的Windows控件;同时学会了使用菜单和工具栏以及通用对话框。
WinCE开发环境搭建
Wince应用程序的开发与调试,需要安装以下软件:
1.Visual Studio 2008 (VS2005亦可)
2.Wince SDK
3.ActiveSync
4.5或Windows Mobile Device Center
B Device 驱动
在此,说明下各部分软件的作用:
1.Visual Studio是用来开发、编译、调试Wince的应用程序的。
软件
开发的大部分工作都是在此环境中进行的。
2.用C++开发Wince应用程序需要安装SDK,同时.NET用户是不需要
安装SDK。
Wince SDK通常由Wince设备厂商提供。
3.同步软件是Windows操作系统和Wince设备之间通讯的桥梁,是
用来联机部署调试Wince程序的,例如设置断点等等。
XP系统下的同步软件是ActiveSync4.5,Windows7下的同步软件是Windows Mobile Device Center,又细分为32位和64位。
4.PC机和wince联机的时候,是通过USB连接的,此时就需要USB
驱动。
XP系统的驱动是单独的,是由Wince设备厂商提供。
Windows7的驱动集成到了Windows Mobile Device Center中,所以Windows7用户是不需要额外驱动的。
所以,开发环境安装流程如下:
1.安装VS2008,安装SDK,安装ActiveSync4.5,安装USB驱动(XP
用户)
2.安装VS2008,安装SDK,安装Windows Mobile Device Center
(WIN7用户)。
基于WINCE的图片浏览器开发
XX大学信息科学技术学院《嵌入式系统》大作业设计报告项目名称:基于Wince的C#应用程序开发——图片浏览器姓名:学号:班级:日期:2011-6-20目录第一部分概述 (2)、Windows CE操作系统概述 (3)、Windows CE应用程序介绍 (3)、图片浏览器介绍 (4)第二部分设计任务 (4)、需求分析 (4)、程序功能 (4)第三部分设计原理 (5)、主要的类及控件介绍 (5)控件 (5)类 (6)类 (6)第六部分结论 (7)附录 (8)1参考资料 (8)2设计步骤 (8)操作系统的下载: (8)应用程序部分: (15)3遇到的问题与解决方法 (17)4程序清单 (17)5课程体会 (24)第一部分概述嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式操作系统种类繁多,例如:嵌入式Linux、Windows CE、VxWorks、pSOS 、等等,其中,Windows CE 操作系统是一款微软公司开发的嵌入式操作系统,它继承Windows操作系统的许多优点,而且资源充足,简单易学,在嵌入式得到大量应用。
随着手机、微型电脑设备等等嵌入式设备的蓬勃发展,嵌入式应用大量地发展了起来,许多在桌面广泛应用的程序越来越多地向嵌入式方向移植和应用,嵌入式应用程序正如火如荼地发展着!Windows CE的开发工具与平台也有很多,例如Embedded Visual C++等等,在本研究里面,我们选取Visual Studio 2005这个资源丰富,操作简便的开发平台,基于PAX270硬件平台进行图片浏览器的应用程序开发。
javaweb实习报告
javaweb实习报告篇一:JavaWeb实习报告JavaWeb实习报告一、实习目的与任务为了锻炼咱们的实践动手能力,提高咱们分析问题、解决问题的能力,培育咱们的工作意识和团队合作的意识,了解软件开发的进程和大体流程,以便于帮忙咱们能够在大四毕业时可找到一份客观的工作,咱们在大四刚开学就开始了生产实习。
这次实习的主要任务是Java Web软件开发,学习Java 开发中比较典型且经常常利用到的几个知识,其中包括Jsp、Servlet、Html、JDBC等等,另外,Java开发中也必需要用到数据库,因此实习中还加入了Mysql数据库的学习。
掌握了这些大体知识以后,就开始真正的项目开发,而且这次咱们所要开发的项目是有关博客页面的项目,并完成老师指定的功能。
二、实习地址重庆足下科技三、实习内容和要求咱们这次实习,在校外也就是软帝公司总共是十天,开始几天大体上是天天学习一个方面的内容,可能学习了六天其中包括Jsp、Servlet、Html、JDBC、Mysql等等,剩下几天就是项目时间,做出一个博客开发的项目。
大致内容如下:一、Java语言简介Java语言Java是由Sun微系统公司所发展出来的程序语言,它是一种面向地向的语言,Java也号称是能跨平台利用的语言,这主如果因为Java本身被编译以后,并非是直接产生可执行的代码,而是产生一种中间码叫作ByteCode,这种代码必需在透过Java 的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种Java的直译器,就可以解读ByteCode也就可以执行Java编译过的程序,故与Java程序是在那种平台上被编译的,就完全没有关连了。
Java写出来的程序可分为两类,别离是Java Applet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个阅读器,且就是利用Java程序所发展出来的。
winform ui界面设计例程
winform ui界面设计例程WinForms 是一个用于创建 Windows 应用程序的桌面应用程序框架,它提供了丰富的用户界面设计功能。
在 WinForms 中,你可以使用 Visual Studio 或者其他集成开发环境来创建 UI 界面。
下面我将从创建新项目、设计界面、添加控件和事件处理等方面来介绍 WinForms UI 界面设计的例程。
首先,你可以打开 Visual Studio,并选择创建一个新的WinForms 项目。
在创建项目的过程中,你可以选择项目的名称和保存位置等信息。
创建完成后,你会看到一个空白的窗体(Form)出现在你的项目中。
接下来,你可以开始设计界面。
在窗体上拖放控件,比如按钮、文本框、标签等,来构建你的界面布局。
你可以使用属性窗格来调整控件的属性,比如大小、位置、颜色等。
你还可以使用布局管理器来帮助你更好地管理控件的布局。
除了基本的控件外,你还可以使用自定义控件或者第三方控件来丰富你的界面设计。
这些控件可以帮助你实现更复杂的功能和更美观的界面效果。
在界面设计完成后,你可以添加事件处理程序来响应用户的操作。
比如,当用户点击按钮时,你可以编写代码来处理按钮的点击事件,执行相应的操作。
除了界面设计,你还可以在 WinForms 中实现数据绑定、图形绘制、动画效果等功能。
这些功能可以帮助你实现更丰富的用户界面交互体验。
总的来说,WinForms 提供了丰富的工具和功能来帮助你设计和实现 Windows 应用程序的用户界面。
通过合理的布局和控件选择,结合事件处理和其他功能,你可以创建出功能丰富、美观的 UI 界面来满足用户需求。
希望这些信息能对你有所帮助。
系统开发实训实验报告
一、实验目的通过本次系统开发实训,使学生掌握系统开发的基本流程,熟悉系统分析、设计、编码、测试和部署等环节,提高学生的实际动手能力和团队协作能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 数据库:MySQL 5.74. 硬件环境:普通PC三、实验内容本次实验以“学生信息管理系统”为例,完成以下任务:1. 需求分析2. 系统设计3. 系统编码4. 系统测试5. 系统部署四、实验步骤1. 需求分析(1)分析用户需求:系统应具备学生信息录入、查询、修改、删除等功能。
(2)确定系统功能模块:学生信息管理、课程管理、成绩管理、用户管理等。
(3)绘制用例图:展示系统与用户之间的交互关系。
2. 系统设计(1)数据库设计:设计学生信息表、课程表、成绩表、用户表等。
(2)界面设计:设计登录界面、学生信息管理界面、课程管理界面、成绩管理界面等。
(3)功能模块设计:根据需求分析,设计各功能模块的实现方法。
3. 系统编码(1)数据库连接:使用C#连接MySQL数据库。
(2)数据操作:编写数据插入、查询、修改、删除等操作。
(3)界面实现:使用WinForms控件实现登录界面、学生信息管理界面等。
4. 系统测试(1)单元测试:对各个功能模块进行测试,确保功能正确。
(2)集成测试:测试系统整体功能,确保各模块之间能够正常工作。
(3)性能测试:测试系统在处理大量数据时的性能表现。
5. 系统部署(1)打包:将系统编译为可执行文件。
(2)安装:将可执行文件部署到目标机器。
(3)配置:配置数据库连接、系统参数等。
五、实验结果与分析1. 实验结果本次实验成功实现了“学生信息管理系统”,实现了学生信息录入、查询、修改、删除等功能。
2. 实验分析(1)通过本次实验,掌握了系统开发的基本流程,熟悉了系统分析、设计、编码、测试和部署等环节。
(2)提高了实际动手能力和团队协作能力,为以后从事系统开发工作奠定了基础。
sdwebui用法
sdwebui用法SDWebUI是一款基于.NET平台的Web应用程序界面库,旨在为开发者提供一套简洁、易用、功能丰富的UI组件。
它具有跨平台、高性能、易于定制等优点,广泛应用于企业级Web应用的开发。
下面将详细介绍SDWebUI的安装、使用方法以及应用场景。
一、SDWebUI简介SDWebUI是一套成熟的Web UI库,包含大量预制的组件,如表格、表单、菜单、工具栏等,可直接应用于项目中。
它支持多种布局方式,如栅格布局、浮动布局等,满足不同场景的需求。
此外,SDWebUI还支持主题样式定制,让开发者轻松打造出独特的界面风格。
二、SDWebUI的安装与使用方法1.安装SDWebUISDWebUI可以通过NuGet包管理器进行安装。
在Visual Studio中,打开解决方案资源管理器,右键点击项目名称,选择“管理NuGet程序包”,搜索“SDWebUI”并安装。
2.使用SDWebUI安装完成后,在项目中引用SDWebUI的命名空间即可开始使用。
例如,在 Web Forms项目中,可以在页面中添加如下代码:```csharpusing SDWebUI;```然后,可以在代码behind中实例化SDWebUI的组件,如:```csharpSDWebUI.Button btnLogin = new SDWebUI.Button();btnLogin.Text = "登录";btnLogin.Click = HandleLoginClick;this.Controls.Add(btnLogin);```三、SDWebUI的应用场景与优势1.应用场景SDWebUI适用于各种类型的Web应用,如企业内部管理系统、电商平台、门户网站等。
它提供了丰富的组件,满足各类业务需求。
2.优势(1)跨平台:SDWebUI支持多种操作系统,如Windows、Linux、Mac等,具有良好的兼容性。
(2)高性能:SDWebUI采用.NET平台,性能优异,可应对高并发、大数据量的场景。
WINCE6.0+系统定制、SDK定制及一个示例应用程序
WIN CE6.0 STEP BY STEP Version 1.0一、系统定制1、这里假设您已经把软件环境都搭建完毕,打开VisualStudio2005,选择新建->项目->Platform Builder for CE 6.0。
2、下一步,选择Device Emulator:ARMV4I,如果有实际设备,也可选择对应设备开发板的CPU等型号进行配置。
3、下一步,选择你想开发的设备类型,这里选择PDA Device,继续4、下一步,选择Mobile Handheld。
5、选择你定制操作系统需要的应用程序。
默认,下一步。
6、选择你定制操作系统需要的网络配置。
默认,下一步。
7、下一步,完成配置。
8、选择项目->属性,对操作系统简单修改一下。
9、下图,可以选择SDK的默认开发语言,可自行修改。
10、下图Enable KITL(no IMGNOKIL=1)取消选定,否则可能会造成模拟器黑屏。
11、如有需要可选择Catalog Items View 对你的操作系统进行裁剪,比如加些应用程序、加些字体等。
12、配置完毕后,可进行编译,此处可能需要很长时间,请耐心等待,编译成功后在*\WINCE600\OSDesigns\OSDesign1\OSDesign2\RelDir\DeviceEmulator_ARMV4I_Release\(参考路径)文件夹下会生成一个NK.bin的文件,此文件即为你定制好的操作系统文件,如有硬件并且安装好启动程序,即可启动你自定制的操作系统。
这里我们准备用模拟器进行程序开发,因此,下面要生成一个模拟器类型的SDK。
二、生成SDK1、项目->Add New SDK….2、添加对应的路径、名称等信息。
3、确认你编译的操作系统为ARMV4I Emulator Debug版本。
4、其他一些基本设置略,如添加皮肤、设定分辨率等,最后点完成, Build此SDK5、Build结束后,可在此*\WINCE600\OSDesigns\OSDesign1\OSDesign1\SDKs\SDK1参考路径下找到您的SDK文件。
WINCE数据库基本操作
WINCE数据库基本操作 WINCE数据库基本操作
数据库的指针移动操作: CEOID CeSeekDatabase( HANDLE hDatabase, hDatabase, DWORD dwSeekType, dwSeekType, DWORD dwValue, dwValue, LPDWORD lpdwIndex ); 其返回值为要搜索的记录的数据库对象标识,其可 以辅助完成数据库的读写,数据库修改等各种操 作.
WINCE数据库基本操作 WINCE数据库基本操作
CEPROPVAL结构体的用法: CEPROPVAL结构体的用法: 结构体的用法 typedef struct _CEPROPVAL { CEPROPID propid; propid; WORD wLenData; wLenData; WORD wFlags; wFlags; CEVALUNION val; } CEPROPVAL; val; 其中第一个参数为记录的属性列的ID,第四个参数为记录 其中第一个参数为记录的属性列的ID,第四个参数为记录 值的联合体,具体结构如下: typedef union _CEVALUNION { short iVal; USHORT iVal; uiVal; uiVal; long lVal; ULONG ulVal; FILETIME filetime; lVal; ulVal; filetime; LPWSTR lpwstr; CEBLOB blob; BOOL boolVal; lpwstr; blob; boolVal; double dblVal; } CEVALUNION; dblVal;
WINCE数据库基本操作 WINCE数据库基本操作
如何读取数据库中的内容,此时要用到函数: CEOID CeReadRecordProps( HANDLE hDbase, hDbase, DWORD dwFlags, dwFlags, LPWORD lpcPropID, lpcPropID, CEPROPID *rgPropID, rgPropID, LPBYTE *lplpBuffer, lplpBuffer, LPDWORD lpcbBuffer ); 其中lplpBuffer 其中lplpBuffer是存储记录的指针.
“断点续传”在Wince系统上的实现
Hos:ww w. Cc n t ab .o
Usr Ag n: o ia50 ( id ws e — e t M zl /. W n o ;U:Wid wsNT .: l no 51 e US v 1921 ) Ge k /0 0 0 i f x361 (. n— ;r:...1 c o2 1 1 1 Fr o /..1 2 e
返 回值 :
T U 添加下载任务成功 RE F L E 添加下载任务失败 A S
参数 :
pz R 添 加 的 下 载文 件 的 U L地 址 sU L R
Rne ag :请 求资源的范围;
在 R ne ag 的请求 资源范 围部分 ,可 以加上 bt y e参数 ,指 定传输的范围。如 :
Ab ta t ” B e k o n o t u n l ” i a c mmo p l a in o r P p o o o n d s tp P y tm, e a s h n e sr c : r a p i t n i i gy c n s o n a p i t fHrr r t c li e k o C s se b c u e t e Wi c c o s s m n y s p o t h ip a fUN CODE c a a tr n s o e a p i ai n f n t n o e P y tm a ' b s d y t o l u p r t e d s l y o I e h r ce ,a d mo t ft p l t u ci ft C s se c n t e u e h c o o h
pz i c o sDr t n下载文件的存放 路径 ei 作 用 :添加需要下载的文件的 U L R ,指定文件存 放 目录。
WinCE基础教程
下载并安装“ActiveSync4.2.exe”,用于通过 DMA、USB、Eternet 调试设备。 DMA:主要用于 VS2005 与模拟器的连接与调试; USB:通过 USB 线与开发板里的 WinCE 通信; Eternet:通过 TCP/IP 与开发板的 WinCE 通信。
2.2.1 新建镜像工程 选择“FILE”->“New Platform”,新建一个平台,
因为制作的是模拟器内核,在这里只要选“Wired Local Area NetWork”即可。
然后默认配置,最后 Finish 即可。 2.2.2 添加组建和驱动
认识一下 PB5.0-IDE 的基本界面: 左边栏为:当前工程窗口,用树形展示当前工程已含的资源。 右边栏为:Catalog,用于显示计算机中已装的所有资源,包括 BSP 中驱动以及 PB 中 的组件资源。
ห้องสมุดไป่ตู้
1 、 如 果 要 开 发 托 管 程 序 , 添 加 Catalog View 的 Core OS->Windows CE Devices->Applications–End User->CAB File Installer/Uninstaller。
2、添加 ActiveSync,在 Catalog View 的 Core OS->Windows CE Devices->Applications-End User 目录下。
1.1.1 安装.NET 1.1
下载完全后,首先安装.NET 1.1 的补丁,
1.1.2 安装PB5.0
然后运行“Microsoft WinCE 5.0.msi”开始安装 PB5.0,一路全部默认安装,当遇到下 面的步骤时按如下设置,选择安装 Emulator 和 ARMV4I。
基于WinCE6.0系统的无损音乐播放插件的开发
们对 音频质量 的要求也 随之提 高。在这种 趋势下 , 无
损 音频 格 式成 为 当前 的热 点 。F A L C是 Fe os s r L s es e l
A d oe 的缩 写 , uiCdc o 是一 种无损 音频 压缩格 式 , 目 是 前最 快且获得 最广泛 支持 的无 损音频 编码 。F A L C解 码器 只需要整 数算法 , 因此相对 大多数 的知觉音频 编 码( 比如 M 3 来 说对 运 算能 力 的依赖 少很 多 。 即使 P) 在较 差 的硬件 上依 然可 以轻 松获 得实 时解码 效率 ” I 。
流 畅播 放 F A L C格 式 的音 频 文 件 。
【 关键 词】F AC L ;解码器 ;Drc h w;WiC . i to eS n E 60 【 中图分类号】T 3 P7 【 文献标识码 】A
De e o m e t o s ls d o Re d r r P u — n Ba e n W i CE6 0 v lp n f Lo se s Au i n e e l g i s d o n .
字符串 fcf 兀  ̄FI 他 据 f 音 帧 4 “ a J R' 块 O 一个或多个 频 ) 个字节的”T E 倨N f 元数 块I S A 一个或多个( L 数 M 其
图 l F AC 流格 式 L 码
WiC .是 一个 开放 、 定制 并具 备 实时 调度 能力 n E6 0 可
的嵌 入式操作 系统 , 以使用在 多种智能设 备 中。系 可
统 内置 多媒 体 功 能 , 通过 Widw da l e 可 以 no s Mei Pa r y 性 预测 编码 的方 法 , 编 在
码 中原始音 频信 号首 先分块处 理 ( 编码后 每一块 即为
第6章.第3节 WindowsCE操作系统开发
先 看一个 平台的创建流程
Platform Setting
使你可以浏览和修改关于整个平台的每个属性的选项 菜单: Platform -> Settings…
Build Options (1)
Enable CE Target Control Support
选择该选项可以在启动时使能目标控制功能(target control support). 选择这一项同时也打开了内核无关传输层(Kernel Independent Transport Layer — KITL). 选择该选项可以在Config.bib文件中预留内存空间,允许在启动过 程中操作系统可以读取boot loader存储的数据. 选择该选项可以开启事件跟踪子系统(event-tracking subsystem). 选择该选项可使线程运行在内核模式,选择该模式会使系统较脆弱, 但是性能会有所提高. 选择该选项可以使编译好的镜像下载后被烧写的到Flash中
允许调试器建立宿主机和目标机间的链接和传送调试信息 要建立宿主机和目标机间的通讯就必须选择该选项,取消该项也 会同时取消被选定的“Enable CE Target Control Support ”选 项 选择该选项可以将Windows CE的有关内核的信息以日志的形式 装入平台镜像中 这是一个有条件编译的标志,设置它表示OS会提供详细的调试信 息来帮助调试. 选择该选项将事件放入release目录,同时开启事件跟踪
PB能做什么?(2)
Windows CE测试套件(Test Kit)提供了整套驱动 测试工具 内核调试器可以调试定制的OS镜像,同时提供给 用户镜像运行状况的信息 应用调试器可以调试在特定OS上运行的应用程序 远程工具可以调试基于Windows CE的目标机上 运行任务,并获取相关信息 模拟器通过模拟硬件可以加快和简化开发过程, 使用户可以在宿主机上完成平台和应用程序的初 步开发 SDK导出向导可以为用户导出一个特定的软件支 持包(software development kit — SDK).
对Windows桌面应用程序进行UI自动化测试
对Windows桌⾯应⽤程序进⾏UI⾃动化测试题记:本⽂简述如何利⽤appium对Windows桌⾯应⽤程序进⾏UI⾃动化测试。
所谓UI⾃动化测试,就是模拟⼀个⽤户,对应⽤程序的UI进⾏操作,以完成特定场景的功能性集成测试。
要对Windows桌⾯应⽤程序进⾏UI⾃动化测试,⽬前可选的技术主要是两种:VS⾃带的CodedUI Test和Appium+WinAppDriver。
但是,微软已经宣布VS2019将是带有CodedUI Test的最后⼀个版本,且在⾯对某些复杂场景的时候有点⼒不从⼼。
⽽Appium作为移动应⽤主流的UI 测试⼯具,已经被业界⼴泛采⽤,且相关的接⼝是标准化的,因此微软对其进⾏了扩展(即),让Appium可以⽀持包括Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32)之内的Windows桌⾯应⽤。
所以采⽤Appium来作为Windows桌⾯应⽤程序UI⾃动化测试的⼯具是最佳选择。
要完成UI⾃动化测试的⼤致步骤如下(你⾸先需要⼀台Windows 10的PC):1,准备好待测试的Windows桌⾯应⽤程序。
2,到下载WinAppDriver的安装包,进⾏安装。
并启⽤Windows 10的开发者模式。
从安装⽬录(⽐如:C:\Program Files (x86)\Windows Application Driver)来启动WinAppDriver。
3,⽤你喜欢的测试框架创建UnitTest项⽬,在项⽬中引⽤Appium.WebDriver这个Nuget包。
4,编写测试⽤例,执⾏测试。
整个⽤例的编写也相对简单:1,使⽤DesiredCapabilities来设定要测试的⽬标应⽤。
2,使⽤WindowsDriver<WindowsElement>来声明测试的会话。
跨平台应用开发中的UI组件库选择与使用
跨平台应用开发中的UI组件库选择与使用随着移动互联网的快速发展,跨平台应用的开发越来越受到关注。
对于开发人员来说,选择和使用一个合适的UI组件库是非常重要的。
UI组件库可以帮助开发人员快速搭建应用界面,提升开发效率,减少重复工作。
本文将探讨跨平台应用开发中的UI组件库选择与使用的相关问题。
一、UI组件库的重要性UI组件库是跨平台应用开发中非常重要的一部分。
通过使用UI组件库,开发人员可以快速构建应用的界面,提升开发效率。
而且,UI组件库还能够提供一致的用户体验,使得应用在不同平台上的界面风格一致,提升用户的使用体验。
二、选择合适的UI组件库在选择UI组件库时,需要考虑以下几个因素:1. 跨平台适配性:由于跨平台应用需要在不同的操作系统上运行,因此UI组件库需要具备良好的跨平台适配性。
开发人员需要选择支持多平台的UI组件库,以便在不同平台上开发出一致的应用界面。
2. 功能丰富性:UI组件库的功能是否丰富也是一个需要考虑的因素。
开发人员需要选择一个功能齐全的UI组件库,以满足应用的需求。
例如,是否支持各种常见的界面元素,如按钮、文本框、下拉菜单等。
3. 可定制性:UI组件库能够提供一致的用户体验,但同时也需要允许开发人员进行一定程度的定制。
开发人员需要选择一个可定制性较强的UI组件库,以便根据应用的需求进行定制。
4. 社区支持:选择一个有活跃的开发者社区支持的UI组件库也是非常重要的。
社区支持可以帮助开发人员解决问题,并提供一些实用的开发经验和最佳实践。
开发人员可以选择那些有大量用户的UI组件库,以提高获取帮助和支持的机会。
三、常见的UI组件库在跨平台应用开发中,有一些常见的UI组件库可以供开发人员选择和使用。
以下是其中的一些示例:1. React Native:React Native是一个非常受欢迎的UI组件库,支持开发iOS和Android应用。
它基于React.js,提供了一套可重用的组件,开发人员可以用JavaScript编写应用界面。
usewindowdimensions 使用
usewindowdimensions 使用UseWindowDimensions 使用窗口尺寸:深入探索React Native Dimensions库引言:在开发移动应用程序时,适应不同屏幕尺寸是一个必备的技能。
如果您正在使用React Native作为开发工具,那么Dimensions库就是您的好帮手。
Dimensions库可以帮助您获取设备屏幕的尺寸,并根据不同的屏幕进行适配。
本文将逐步回答有关Dimensions库的使用,重点介绍了useWindowDimensions函数。
一、什么是Dimensions库?Dimensions库是React Native提供的一个内置模块,它允许开发者获取设备屏幕的尺寸。
使用Dimensions库,可以动态地获得屏幕的宽度和高度,以便更好地适应不同尺寸的设备。
在React Native中,Dimensions库通过Dimensions对象来提供这些功能。
Dimensions对象包含一个名为get或set的方法,分别用于获取和设置屏幕尺寸。
二、使用Dimensions库在React Native中,您可以通过以下步骤来使用Dimensions库:步骤1:导入Dimensions库要使用Dimensions库,首先需要导入它。
在文件的开头添加以下代码:import { Dimensions } from 'react-native';步骤2:获取屏幕尺寸可以使用Dimensions对象的get方法获取屏幕尺寸。
以下是一个示例:const { width, height } = Dimensions.get('window');console.log('屏幕宽度:', width);console.log('屏幕高度:', height);在上面的示例中,我们将屏幕的宽度和高度存储在width和height变量中,并将它们输出到控制台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WinCE UI库开发实践(1)【原创】WinCE UI库开发实践(1)【原创】by ucdragon_wkxWinCE平台下应用开发最麻烦的还是UI部分。
与windows平台不同,windows平台有大量的皮肤控件,程序美观不在话下。
而wince根本没有合适的UI库,网络上根本找不到,所以编制比较美观的界面,是一个头痛的事情。
默认的wince控件都是灰色的,拿来做产品难堪大用。
如果仅仅是一个应用,可能窗口数不多,那么每个窗口进行绘制还是一个选择。
但是窗口数多了,这就是一个难以忍受的工作了,每个按钮,图片,text都要在paint事件中写代码,而且各个窗口都不同,这个工作简直不是人干的。
1 扩展标准控件怎么办呢?有一个选择方案,就是对现有控件如CButton等基类进行扩展,实现贴图自绘功能。
这样做可以实现图片按钮,透明文字等一些常用控件,但是对其它一些控件难以实现,比如自绘list,想要自定义自己的滚动条,是没有正常办法的(当然有些偏门的方法,比如用SetWindowRgn切掉滚动条,再换上自己的,但是再想进一步扩展就困难了),因为list 的滚动条是内部滚动条,微软没有暴露接口去改变它。
还有listview控件长按会出现一个点圈。
所以这种方法有很大的缺憾。
还有一个很大的问题,就是窗口控件绘制不同步的问题。
wince不同于pc,使用多个控件时,内核在绘制时是一个控件接着一个控件进行的,有先有后,窗口是一块一块刷新的。
因为pc上cpu速度快,整个绘制过程很快就结束了,所以看起来就是整个窗口一下就刷新了。
但是wince里,主芯片主频通常是不够快的,这个现象就很明显,图片,按钮和列表先后出来,对商用产品来说效果很差,只能在美工上想些办法,让不同窗口的颜色尽量一致,变化小些,这样让用户看得不明显。
但是这是不得已办法。
2 实现自己的UI库绞尽脑汁,最终还是回到老路上,只能自己画。
但是不能自己在每个窗口用代码画,太累。
最好通过配置就实现按钮,图片,列表,文字,滚动条的自动绘制。
想法有了,下面就是动手了。
这是一个积累的过程,经过长达1年多的时间,这套UI库终于成熟,实现了用配置文件定制UI的功能。
可以实现多语言和多皮肤实时切换,不会有闪烁。
界面示例:配置文件示例:截取部分[TV]RectBox={0,0,272,183}RectSignalPic={261,213,41,18}RectFrame={47,0,203,183}RectFrameBody={55,8,186,173}SkinString={BG tv_bg 0,0,320,240TEXT ProgramText 255,255,255 14 400 225,191,100,18 CENTER SINGLELINE VISIBLE TEXT HintText Loading... 255,255,255 28 800 0,81,272,183 CENTER MULTILINE VISIBLE TEXT IC1SignalText 150,150,0 12 100 232,230,40,12 RIGHT SINGLELINE INVISIBLE TEXT IC2SignalText 140,140,255 12 100 275,230,40,12 RIGHT SINGLELINE INVISIBLEPICTURE SignalPic tv_signal OPACITY 251,213,0,18 NORMAL VISIBLEPICTURE ChargePic tv_charge OPACITY 5,205,10,22 NORMAL INVISIBLE PICTURE Powercell1Pic tv_powercell OPACITY 6,222,8,4 NORMAL INVISIBLEPICTURE Powercell2Pic tv_powercell OPACITY 6,217,8,4 NORMAL INVISIBLEPICTURE Powercell3Pic tv_powercell OPACITY 6,212,8,4 NORMAL INVISIBLEPICTURE Powercell4Pic tv_powercell OPACITY 6,207,8,4 NORMAL INVISIBLEBGBUTTON CloseBtn tv_close OPAQUE 281,3,32,32 1 VISIBLEBGBUTTON PrevBtn tv_prev OPAQUE 70,194,40,40 2 VISIBLEBGBUTTON NextBtn tv_next OPAQUE 186,194,40,40 3 VISIBLEBGBUTTON ScanBtn tv_scan OPAQUE 21,194,40,40 4 VISIBLEBGBUTTON MenuBtn tv_menu OPAQUE 118,198,61,35 5 VISIBLE2STATEBUTTON MuteBtn NULL NULL tv_mute tv_mute OPAQUE 283,159,30,30 7 VISIBLE BGBUTTON VolPlusBtn tv_vol_plus OPAQUE 285,44,25,13 8 VISIBLEBGBUTTON VolMinusBtn tv_vol_minus OPAQUE 285,140,25,13 9 VISIBLEBGSCROLL VolScroll tv_vol_thumb OPACITY 285,58,25,81 8 VERTICAL 6 VISIBLENOMOVINGNOTIFY REVERSE_DIRECTIONLIST MenuList tv_listframe list_rowbg_selected 47,0,203,183 55,8,186,173 24 255,255,255 255,255,255 0,0,0 14 400 NOAUTOHIDE list_scrollup 0,0,30,22list_scrolldown 0,150,30,23 list_scrollbg_up list_scrollbg_down list_scrollbg_mid 30 22 23 1 list_block_up list_block_down list_block_mid 3,22,24,128 4 4 1 10 NULLINVISIBLE}多语言配置文件[Tv]Title=搜台WHRatio=视频宽高比Sound=声效Auto=自动WH169=16 : 9WH43=4 : 3Loud=大声Medium=普通Low=安静ShowSignal=显示信号数值[Tv]Title=ScanWHRatio=Aspect RatioSound=Sound EffectAuto=AutoWH169=16 : 9WH43=4 : 3Loud=LoudMedium=GeneralLow=Quiet虽然已经可以可以满足通常使用,但是随着新的应用的开发,会碰到难以办到的情况,这就需要不断修改甚至新加控件了。
WinCE UI库开发实践(2)【原创】WinCE UI库开发实践(2)原创by ucdragon_wkx因为项目开发工具使用EVC4,使用MFC做界面开发是比较方便的选择。
采用的方案是扩展CWnd,实现一个皮肤控件。
此控件负责所有绘制配置文件中定义的各界面元素,不同于普通窗口中的文字标签,按钮等控件,界面元素不作为单独窗口存在,只是皮肤控件内部管理,这样就不会出现窗口内多个控件刷新有先有后的问题,所以不会有闪烁。
class UCSkinBg : public CWnd{// Constructionpublic:UCSkinBg();void SetMsgHwnd(HWND hwnd);void SetSkinString(const CString& skinString);void SetText(const CString& name, const CString& text);void SetTextBound(const CString& name, RECT& r);void SetBarBound(const CString& name, RECT& r);void SetPicVisible(const CString& name, BOOL visible);void SetTextVisible(const CString& name, BOOL visible);void SetBtnVisible(const CString& name, BOOL visible);void SetBarVisible(const CString& name, BOOL visible);void SetLineVisible(const CString& name, BOOL visible);void SetCheckboxVisible(const CString& name, BOOL visible);void SetBarColor(const CString& name, COLORREF color);void SetButtonDelay(BOOL delay);void UseSpecialFont(BOOL special);void SetTextFontSize(const CString& name, int nHeight, int nWeight);void SetPic Bound(const CString& name, RECT& r);void SetCheckboxText(const CString& name, const CString& text);BOOL GetCheckstate(const CString& name);void SetCheckstate(const CString& name, BOOL checkon);void SetScrollBarPositionRatio(const CString& name, double ratio);void SetBtnState(const CString& name, int state);void SetResInst(HINSTANCE hInst);void SetPaintNotifyRect(RECT* r);void SetNopaintRect(RECT* r);void SetListText(const CString& name, CStringArray& arrItem, CDWordArray& arrItemIcon,CDWordArray& arrItemIconSelected);int GetListSelection(const CString& name);int GetListCount(const CString& name);void SetListSelection(const CString& name, int rowIndex);void SetListIcons(const CString& name, CStringArray& arrIcons);void SetListVisible(const CString& name, BOOL visible);BOOL GetListVisible(const CString& name);void ClearList(const CString& name);void AddListText(const CString& name, CString& itemText, DWORD itemIcon, DWORDitemIconSelected);void GetListItems(const CString& name, CStringArray& arrText,CDWordArray& arrIcon);// Attributesprivate:…私有成员略// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(UCSkinBg)//}}AFX_VIRTUAL// Implementationpublic:virtual ~UCSkinBg();// Generated message map functionsprotected://{{AFX_MSG(UCSkinBg)afx_msg BOOL OnEraseBkgnd(CDC* pDC);afx_msg void OnPaint();afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnTimer(UINT nIDEvent);//}}AFX_MSGDECLARE_MESSAGE_MAP()};皮肤控件最核心部分就是绘制各元素,反正就是一个一个的绘制上去,别看元素多,其实还是蛮快的。