android 模糊查询控件_第三十二篇:在SOUI2.0中像android一样使用资源
//stamp:0ae7b68801b8deb8/**//*该文件由uiresbuilder生成,请不要手动修改*//**/#pragma once#include namespace SOUI{ const SNamedID::NAMEDVALUE namedXmlID[]={ {L"btnSelectGif",65540}, {L"btn_display",65541}, {L"btn_hidetst",65542}, {L"btn_lrc",65543}, {L"btn_menu",65536}, {L"ctrl_flash",65538}, {L"gif_test",1000}, {L"giftest",65539}, {L"tab_main",65537} }; class _R{ public: class _name{ public: _name(){ btnSelectGif = namedXmlID[0].strName; btn_display = namedXmlID[1].strName; btn_hidetst = namedXmlID[2].strName; btn_lrc = namedXmlID[3].strName; btn_menu = namedXmlID[4].strName; ctrl_flash = namedXmlID[5].strName; gif_test = namedXmlID[6].strName; giftest = namedXmlID[7].strName; tab_main = namedXmlID[8].strName; } const wchar_t * btnSelectGif; const wchar_t * btn_display; const wchar_t * btn_hidetst; const wchar_t * btn_lrc; const wchar_t * btn_menu; const wchar_t * ctrl_flash; const wchar_t * gif_test; const wchar_t * giftest; const wchar_t * tab_main; }name; class _id{ public: const static int btnSelectGif = 65540; const static int btn_display = 65541; const static int btn_hidetst = 65542; const static int btn_lrc = 65543; const static int btn_menu = 65536; const static int ctrl_flash = 65538; const static int gif_test = 1000; const static int giftest = 65539; const static int tab_main = 65537; }id; class _string{ public: const static int mccol_1 = 0; const static int mccol_2 = 1; const static int mccol_3 = 2; const static int mccol_4 = 3; const static int mccol_5 = 4; const static int mccol_6 = 5; const static int title = 6; const static int ver = 7; }string; class _color{ public: const static int blue = 0; const static int gray = 1; const static int green = 2; const static int red = 3; const static int white = 4; }color; }; const _R R;}
第一行保留的是一个时间戳,如果资源中布局相关的资源没有变化,则不再生成。首先会自动生成一个name, id映射表:SNamedID::NAMEDVALUE,这是一个结构体数组,保留每一个控件的名字及ID(自动生成的及XML中定义的,自动生成的ID自动从65536开始,因此自己定义时应该小于这个值)。接下来定义了一个类 class _R。_R中有4个子类:_name, _id, _string, _color,每个类有一个实例,对应的名字为:name, id, string, color。最后定义一个_R的实例R。到这里你应该已经知道在SOUI中R这个对象有哪几个成员了。那么在代码中如何使用R这个对象呢?
如何使用name对象:
观察R这个对象,你可能已经发现,在代码直接使用R.name.btnSelectGif就等价于在代码中输入L“btnSelectGif”,这样的好处在于你在输入R.name.btn后VS或者VA可能就给你补全后面的SelectGif,既提高了编码效率,又保证了不会出错。(对象name修改以后也可以使用VA的变量重命名功能自动批量修改)。
如何使用ID对象:
前面提到使用字符串来查找窗口对象相对来说较ID比较会慢一点,那么如何使用ID对象呢?要使用ID对象,有一个要求:由于自动生成的ID并没有修改到原有的XML中,直接从XML中初始化布局时是没有ID属性的。为此SOUI2.0的SApplication对象增加了一个方法:InitXmlNamedID,参见demo(注意调用位置):
//如果需要在代码中使用R::id::namedid这种方式来使用控件必须要这一行代码:2016年2月2日,R::id::namedXmlID是由uiresbuilder 增加-h .\res\resource.h idtable 这3个参数后生成的。 theApp->InitXmlNamedID(namedXmlID,ARRAYSIZE(namedXmlID),TRUE);
在布局创建前给App对象初始化一个自动生成的Name转ID表。控件创建并初始化name属性时,自动从该表中查询ID。如此,在代码中可以直接使用R.id.btnSelectGif来查找对应的控件了。
如何使用string, color对象:
在布局XML中使用使用string, color对象和android一样:采用@string/str-name, @color/color-name来分别引用在string,color中定义的对应的字符串或者颜色值。这里重点讲一下在代码中使用这两个对象:
//演示R.color.xxx,R.string.xxx在代码中的使用。 COLORREF crRed = GETCOLOR(R.color.red); SStringW strVer = GETSTRING(R.string.ver);
上面是demo:winmain中一个使用示例。R.color.red, R.string.ver是自动生成的两个整数,GETCOLOR, GETSTRING这两个宏会自动从资源中的字符串表及颜色表中获取对应的ID指定的值。
android 模糊查询控件_第三十二篇:在SOUI2.0中像android一样使用资源相关推荐
- android 模糊查询搜索框_彻底搞懂 iOS 和 Android 的设计差异
设计经验分享 · 不定时更新 ------------------------------------------- 胡桃子 深圳 | UI/UX设计师 唧唧歪歪:设计师在做 app 的时候很少考虑两 ...
- android github 评分控件_「开源」Arcgis for Android测量工具更新至V1.9,新增绘制控件...
开源地址:https://github.com/roomanl/ArcgisTool 封装Arcgis Runtime for Android 100.6.0地图基本操作. 包括:测量工具控件及测量接 ...
- android 模糊查询下拉菜单,android 模糊查询搜索框_基于心智模型,解析蜻蜓Fm「搜索」功能...
本文以心智模型为理论依据,分析了蜻蜓Fm[搜索]功能的用户操作路径以及app设计. 最近在做搜索相关的改版设计工作,以下是我在体验现有搜索逻辑的情况下,产生的一些想法: 对于搜索这个功能,用户到底是怎 ...
- winform 显示分隔控件_(八十)c#Winform自定义控件-分割线标签-HZHControls
1 //***********************************************************************2 //Assembly : HZH_Contro ...
- Android UI开发第三十二篇——Creating a Navigation Drawer
Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图.官方是这样定义的: The navigation drawer is a panel that displays the ap ...
- java mysql查询试题_java 面试题三十二 mysql查询面试题
题一: 新建学生-课程数据库的三个表: 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码; 课程表:Course(Cno,Cname,Cpno,Credeit ...
- Android 自定义键盘控件_身份证号码输入
效果图: 步骤: 1.继承键盘类,写一个MyKeyboardView ,备用. public class MyKeyboardView extends KeyboardView {private Co ...
- matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀
时间为友,记录点滴. 我们在<初始滤波之均值滤波>中有聊过滤波的本质,以及介绍了其中一种线性滤波(均值滤波).对于常见的非线性滤波"中值滤波"也在<视频的读取和处 ...
- 怎么用stata打开dta文件_第三十二章、用c语言打开文件
这一章我们先来了解一下文件是什么? 一个文件通常就是磁盘上的一段命名的存储区.如我们在C语言编程中经常引入的stdio.h就是一个包含一些有用信息的文件的名称.当然对于操作系统来说,文件就会更复杂一些 ...
最新文章
- linux系统主要常见目录结构
- 1151 LCA in a Binary Tree (30 分)【难度: 难 / 知识点: LCA 未完成】
- 使用 VS2005 编译 directshow sample 时链接错误
- 设置git协议clone代理
- [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]
- java打印字符串引用_Java中的字符串及其中的常用方法
- 几何画板要怎样度量直线方程
- html5-5 HTML5表单元素和内嵌框架
- C# 简单的ZEBRA标签打印程序
- php批量邮件地址,PHP通过phpmailer批量发送邮件功能
- 安装CARLA Simulator错误 安装失败 0x80070005 - 访问被拒绝 Error Setup Failed 0x80070005 - Access is denied
- 博科brocade SAN光纤交换机端口激活过程(转载)
- 【pandas】结合泰坦尼克生还分析讲讲pandas常用基础操作
- 彩色图像、灰度图像与黑白图像的区别
- wox开机自启_快速启动神器-wox 安装和插件配置
- 26岁程序员猝死,再次提醒:有几个前兆其实很显眼
- 如何使用百数扫码实现高效信息录入与查询
- 2022-03-清华管理学-清华大学-宁向东
- 使用Ansible部署器设置一个小型的TF+K8s实验室
- 转:『诡异的』VL10B创建外向交货单出错解决全过程
热门文章
- vim显示行号、多行复制和删除
- 010. 使用.net框架提供的属性
- 如何通过PHP将excel的数据导入MySQL中
- BP神经网络算法学习
- jsp 中提交表单后在firefox、chrome 中中文显示为正常,但在IE中中文显示为乱码?...
- 部署windows服务
- Oracle定时器(Job)各时间段写法汇总
- c++11中静态断言static_assert
- warning: function declaration isn’t a prototype(函数声明不是原型)的解决办法
- java输出日志_java代码中如何正确使用loggger日志输出