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有很多语言的 ...
随机推荐
- js面试题之数组去重对比
最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value, ...
- Qt自适应大小显示图片,添加菜单
由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器 ...
- iOS多线程技术方案
iOS多线程技术方案 目录 一.多线程简介 1.多线程的由来 2.耗时操作的模拟试验 3.进程和线程 4.多线程的概念及原理 5.多线程的优缺点和一个Tip 6.主线程 7.技术方案 二.Pthrea ...
- RESTful API测试工具
Postman Postman是一个Chrome APP,可以直接通过Chrome商店安装(需F墙,推荐修改hosts的方法,简便快捷有效) 其截图如下,非常漂亮 Aoizza Web APP,点击访 ...
- 把NetDimension.NanUI项目从C#6.0语法还原到C#5.0
前言 找Cef资料时看到一个比较好的封装NanUI for Winform发布,让Winform界面设计拥有无限可能,下载代码后发现是Vs2015+C#6.0开发的,本机没有VS2015也不想安装.于 ...
- 在Windows Server 2012 R2的Hyper-V中设置虚拟机启用增强会话模式
在Windows Server 2012 R2的Hyper-V中,可以为虚拟机提供一种全新的连接方式,就是“增强会话模式”,它将让您更加方便的对虚拟机进行操作,比如分辨率的调整.设备的加载,最为方便的 ...
- 1、怎样设置C#OpenFileDialog(文件选择窗体)的指定路径、文件格式等属性(设置打开默认路径、文件格式、窗体显示文本)
C#的OpenFileDialog的常用属性设置 1.设置属性 1)设置弹出的指定路径(绝对路径.相等路径) 2)设置标题 3)设置文本格式 2.打开方式1(绝对路径) 2.1) 打开的路径
- Unity3D 5.x 简单实例 - 发射炮弹
1,下载.安装: http://unity3d.com/cn/get-unity/download/archive 建议直接借助 UnityDownloadAssistant 进行安装,根据需要勾选需 ...
- Java--对象池化技术 org.apache.commons.pool2.ObjectPool
org.apache.commons.pool2.ObjectPool提供了对象池,开发的小伙伴们可以直接使用来构建一个对象池 使用该对象池具有两个简单的步骤: 1.创建对象工厂,org.apache ...