GacUI学习(一)
GacUI学习(一)之高仿系统记事本(一)
转载请注明来源:http://www.cnblogs.com/lyfh/p/6107215.html
GacUI是轮子哥(vczh)精心打造的跨平台C++转用UI库,包含了轮子哥毕生的C++功力。针对GacUI,轮子哥写过中文教程和Demo,教程地址https://segmentfault.com/a/1190000004055577,Demo在其博客,可自行前去阅读。
本程序正是根据其中的《GacUI Demo:文本框基本应用》扩展而来,兼容其后的文本框高亮系列。话不多说,先上图(本图为记事本主界面,并带上了文本框高这功能,高亮模式由状态条上的高亮模式确定):

GacUI包含丰富的排版本功能,具体参见轮子哥的博客《GacUI基本概念(二)——排版(1)》和《GacUI基本概念(二)——排版(2)》。本程序采用了最外层一个三行一列的GuiTableComposition进行布局,然后内部每行一个GuiCellComposition。再在GuiCellComposition内进行控件布置。 具体步骤如下:
首先新建一个继承自vl::presentation::controls::GuiWindow的类TextBoxEditorWindow,作为基础窗口,所有的排版布局及控件操作都将在此窗口上进行。TextBoxEditorWindow构造函数如下:
TextBoxEditorWindow::TextBoxEditorWindow() : GuiWindow(GetCurrentTheme()->CreateWindowStyle())
{
this->SetText(TEXT("GacTextBox"));
this->GetContainerComposition()->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren);
this->SetClientSize(Size(, ));
}
然后再在此构造函数内新建一个table,来进行布局
/*
布局采用3行1列形式
行1:菜单栏,显示各项菜单
行2:编辑栏,显示文本
行3:状态栏,显示行号等状态信息
*/
GuiTableComposition* table = new GuiTableComposition;
table->SetAlignmentToParent(Margin(, , , ));
table->SetCellPadding();
table->SetRowsAndColumns(, );
table->SetRowOption(, GuiCellOption::MinSizeOption());
table->SetRowOption(, GuiCellOption::PercentageOption(1.0));
table->SetRowOption(, GuiCellOption::MinSizeOption());
table->SetColumnOption(, GuiCellOption::PercentageOption(1.0));
this->GetContainerComposition()->AddChild(table);
这几行代码设置了table的一系列属性,具体意义可以参见GacUI的文档http://gaclib.net/Document.html#~/。重点是最后一行,将此table添加到TextBoxEditorWindow。剩下的就是在table的每一格中创建相应的控件。
GacUI学习(一)的更多相关文章
- GacUI学习(二)
GacUI学习(一)之高仿系统记事本(二) 转载请注明来源:http://www.cnblogs.com/lyfh/p/6107614.html 上篇<GacUI学习(一)之高仿系统记事本(一) ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
随机推荐
- jquery兼容实验
使用jquery时候,曾经遇到两个问题: 1.一个页面里,使用了很多基于jquery的前端ui库,但是各个库之间对jquery的依赖的版本不一样,有的依赖jquery1.4,jquery2.0用不了: ...
- php 简单权限管理实现
权限管理介绍.与简单实现思想 权限管理 此函数为模块访问权限管理 实现思路为:根据传进来的权限值,进入不同的权限获取区间,然后根据模块名字判断是否有这个模块的访问权限 使用说明:在每一个模块开始之前调 ...
- [Web API] Web API 2 深入系列(7) Model绑定(下)
目录 ModelBinder ModelBinderProvider 不同类型的Model绑定 简单类型 复杂类型 其他类型 ModelBinder ModelBinder是Model绑定的核心. p ...
- 程序集与反射技术(C#)
首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll).由于程序集在编译后并不一定会生成单个文件,而可能会生 ...
- PetaPoco利用ODP.NET Managed Driver连接Oracle
大概几年之前用PetaPoco做过一个Oracle的项目,开发的时候还需要安装oracle的client,非常麻烦.调试好环境后,一直到项目结束都不敢重装系统.最近又有一个需求需要读取oracle,可 ...
- EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...
- SqlServer切换MySql总结
最近项目任务不多就琢磨着把SqlServer换成MySql(数据访问使用的ado.net),初步想了下方案有2种: 方案一:继续使用ado.net,重写所有的sql语句 优势:数据访问效率高,改写Sq ...
- html5数字和颜色输入框
html5功能强大,数字和颜色输入框例子 效果:http://hovertree.com/code/html5/rxujb6g8.htm <!DOCTYPE html> <html& ...
- MySQL 相关总结
MySQL 优秀在线教程 RUNOOB-SQL 教程 MySQL 常用命令 导出操作 -- 某数据库 全部表 结构和数据 mysqldump -h192.168.8.152 -uroot -p man ...
- 转载:《TypeScript 中文入门教程》 6、命名空间
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变 ...