#include <BGE/All>

using namespace bge;

Window* createButton(const std::string& name,const String& text)
{
    Button* button = new Button(,text);
    button->setName(name);
    button->setSize(Vector2f(,));
    return button;
} int main(int argc, char* argv[])
{
    FileSystem::instance().initial(argv[]);
    FileSystem::instance().setResourcePackage("data.zip");
    WindowManager::instance().initialize("simkai.ttf",false);     Device* device = Device::create();
    device->initial();
    device->createWindow(,,bge::String("BGE Window"));     Panel* panel = new Panel(FloatRect(,,,),);
    GridLayout* layout = new GridLayout();
    panel->setLayout(layout);
    std::vector<float> widths;
    widths.push_back(0.0f);
    layout->setColumnWidths(widths);     std::vector<float> heights;
    for(int k = ; k < ; ++k)
        heights.push_back(48.0f);
    heights.push_back(0.0f);
    layout->setRowHeights(heights);     GridCellInfo info;
    info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button1",L"按键"),info);
    info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button2",L"按键"),info);
    info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button3",L"按键"),info);
    info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button4",L"按键"),info);
    info.columnIndex_ = ;
    info.rowIndex_ = ;
    info.horizontalSpan_ = ;
    Window* edit = new EditField(NULL,L"Edit Text");
    edit->setSize(Vector2f(,));
    layout->addWindow(edit,info);
    info.columnIndex_ = ;
    info.rowIndex_ = ;
    info.horizontalSpan_ = ;
    layout->arrangeWithin();     FrameWindow* window = new FrameWindow();
    window->enableMovement();
    window->setText(L"BGE窗体");
    window->setClientPanel(panel);     WindowManager::instance().addWindow(window);     while(device->isRunning())
    {
        device->preRender();
        WindowManager::instance().update();
        device->swapBuffers();
        device->pollEvents();
    }     WindowManager::instance().terminate();
    device->closeWindow();
    device->terminate();
    device->deleteLater();
    return ;
} 显示如下:   在开发上参考了Qt等软件,支持常见控件,控件序列化,整体换肤,控件换肤 以上代码写的相当啰嗦 其实可以这样写:int main(int argc, char* argv[])
{
    FileSystem::instance().initial(argv[]);
    FileSystem::instance().setResourcePackage("data.zip");
    WindowManager::instance().initialize("simkai.ttf",false);     Device* device = Device::create();
    device->initial();
    device->createWindow(,,bge::String("BGE Window"));     Window* window = WindowManager::instance().createWindow("ui.xml");
    if(window)
        WindowManager::instance().addWindow(window);     while(device->isRunning())
    {
        device->preRender();
        WindowManager::instance().update();
        device->swapBuffers();
        device->pollEvents();
    }     WindowManager::instance().terminate();
    device->closeWindow();
    device->terminate();
    device->deleteLater();
    return ;
}做这个不为别的就是想做
现在有点小问题,修改好了我会上源码 欢饮指点~
  

新做的一个基于OPENGL的gui库的更多相关文章

  1. Axios 是一个基于 promise 的 HTTP 库

    Axios 是一个基于 promise 的 HTTP 库 vue项目中关于axios的简单使用 axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.j ...

  2. 手把手做一个基于vue-cli的组件库(上篇)

    基于vue-cli4的ui组件库,先贴个最终效果吧,步骤有点多,准备分上下篇,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.开工. GitHub源码地址:https://github.co ...

  3. 使用webpack4搭建一个基于Vue的组件库

    组内负责的几个项目都有一些一样的公共组件,所以就着手搭建了个公共组件开发脚手架,第一次开发 library,所以是参考着 iview 的配置来搭建的.记录如何使用webpack4搭建一个library ...

  4. Glidar: 一个基于OpenGL的开源实时3D传感器仿真器

    1 简介 这篇博文将介绍一个简单易用的3D传感器仿真器,可以用来模拟Lidars,立体视觉,基于时间飞行技术的ToF相机和微软的Kinect实时产生3D点云数据.Glidar仿真器并不是针对特定的某一 ...

  5. 手把手做一个基于vue-cli的组件库(下篇)

    基于vue-cli4的ui组件库,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.接上篇,开工. GitHub源码地址:https://github.com/sq-github/sq-ui ...

  6. 准备开发一个基于canvas的图表库,记录一些东西(一)

    开源的图表库已经有很多了,这里从头写个自己的,主要还是 提高自己js的水平,增加复杂代码组织的经验 首先写一个画图的库,供以后画图表使用.经过2天的开发,算是能拿出点东西了,虽然功能还很弱,但是有了一 ...

  7. 菜渣开源一个基于 EMIT 的 AOP 库(.NET Core)

    目录 1,快速入门 1.1 继承 ActionAttribute 特性 1.2 标记代理类型 2,如何创建代理类型 2.1 通过API直接创建 2,创建代理类型 通过API 通过 Microsoft. ...

  8. Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

    从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户 ...

  9. Python GUI库

    PyQT不错的,只是要小心,这个东西是GPL的,如果你要写商业程序需要购买商业版授权.另外PyGTK.wxPython都是不错的GUI库.Python自带了一个基于TkInter的GUI库,如果你不想 ...

随机推荐

  1. 关于HTML页面布局要注意的问题

    1.用百分比设定元素宽度可能造成的错误 很多同学习惯使用百分比来设定页面元素(例如div,以下称作盒子,方便介绍)的宽度,这样做可能造成未知的错误,最常见的就是当页面被缩小,或者屏幕分辨率降低时,由于 ...

  2. CSS背景色渐变

      试了下 渐变色  ,主要确定开始位置  结束位置,以及对应的color-stop;  以下是兼容不同浏览器的代码片段       代码:<style type="text/css& ...

  3. jsp按钮隐藏自动点击

    <%@ page language="java" import="java.util.*" pageEncoding="big5"%& ...

  4. HttpUtility.UrlDecode

    如果在 HTTP 流中传递如空格或者标点符号等字符,它们可能会错误地解释在接收端. URL 编码转换为字符实体等效项; 不允许在 URL 中的字符URL 解码反转的编码. 例如,在嵌入到要在 URL ...

  5. Centos 6.5 rsync+inotify 两台服务器文件实时同步

    rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...

  6. web服务器和ftp服务器有什么区别

    WEB是以一个网页的形势展现出来的,FTP是一个上传和下摘的软件统称,一般,在网站制作中有WEB和FTP两种上传文件的方式,WEB是通过文件夹复制的方式将本地文件传到服务器上,速度较慢,FTP是通过不 ...

  7. Stream 和 byte[] 之间的转换

    Stream 和 byte[] 之间的转换 一. 二进制转换成图片 ? 1 2 3 4 5 MemoryStream ms = new MemoryStream(bytes); ms.Position ...

  8. 01.Bootstrap入门

    Bootstrap介绍: Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加 ...

  9. 通过开户银行账号查询客商名称 sql

    select * from bd_cubasdoc where pk_cubasdoc in ( ') 查询空客商客户银行的单位名称 select b.custcode,b.custname, d.b ...

  10. C语言函数指针实验

    上次看Atmel的示例工程,发现人家使用了函数指针的结构体(函数指针结构体).感叹人家的C语言功夫审核,自己费劲还是只能读懂的份.不过,函数指针确实好用.今天就试试这个超牛的东西.Now let's ...