{"release":{"tag":{"name":"v1.0-alpha","path":"/lc-soft/LCUI/tags/v1.0-alpha","tree_path":"/lc-soft/LCUI/tree/v1.0-alpha","message":"","commit":{"id":"cda4b3a7d6831c75fcda3ca360583fb093661755","short_id":"cda4b3a","title":"RegisterClass -\u003E RegisterClassW","title_markdown":"RegisterClass -\u0026gt; RegisterClassW","description":"","description_markdown":"","message":"RegisterClass -\u003E RegisterClassW\n","message_markdown":"RegisterClass -\u0026gt; RegisterClassW","detail_path":"/lc-soft/LCUI/commit/cda4b3a7d6831c75fcda3ca360583fb093661755","commits_path":"/lc-soft/LCUI/commits/cda4b3a7d6831c75fcda3ca360583fb093661755","tree_path":"/lc-soft/LCUI/tree/cda4b3a7d6831c75fcda3ca360583fb093661755","author":{"name":"liu","email":"lc-soft@live.cn","username":"lc-soft","user_path":"/lc-soft","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1752322935190343944/568_lc-soft_1752322935.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"committer":{"name":"liu","email":"lc-soft@live.cn","username":"lc-soft","user_path":"/lc-soft","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1752322935190343944/568_lc-soft_1752322935.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"authored_date":"2017-04-18T09:08:33+08:00","committed_date":"2017-04-18T09:08:33+08:00","signature":null,"build_state":null},"archive_path":"/lc-soft/LCUI/repository/archive/v1.0-alpha","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"LCUI 1.0 Alpha","path":"/lc-soft/LCUI/releases/tag/v1.0-alpha","tag_path":"/lc-soft/LCUI/tree/v1.0-alpha","project_id":563097,"created_at":"2017-04-18T14:02:50+08:00","is_prerelease":true,"description":"由于本次更新改动很大，所以版本号从 1.0 开始，主要更新内容如下：\r\n\r\n- 改进 bmp、jpeg、png 图片的读取接口\r\n- 添加滚动条（Scrollbar）部件\r\n- 改进按钮（Button）部件\r\n- 改进文本显示（TextView）部件\r\n- 改进文本编辑（TextEdit）部件\r\n- 改进部件的类型、事件、布局及样式处理\r\n- 改进图形界面的性能\r\n- 添加触控支持\r\n- 添加 CSS 和 XML 支持\r\n- 移除 Linux 的帧缓冲（FrameBuffer）支持\r\n- 添加对 Linux 的 XWindow 的支持\r\n- 添加对 [Windows 通用应用平台（UWP）](https://docs.microsoft.com/zh-cn/windows/uwp/get-started/whats-a-uwp)的简单支持\r\n- 改进对 Windows 的支持\r\n- 添加[部分文档](https://lcui.lc-soft.io/guide/zh-cn/)\r\n- 修复部分已知BUG\r\n\r\n原计划在此版本中添加缩放功能，用于适应各种分辨率的屏幕，但由于涉及到的地方比较多，所以该特性已经推迟到后续的版本中。\r\n\r\n以下将针对几个主要改动做些简单的说明，如需要体验具体效果可以下载 LCUI 的功能旗舰级应用：[ LC's Finder](https://lcfinder.lc-soft.io)。\r\n\r\n### XML 和 CSS\r\n\r\n本次比较大的改动是加入了对 XML 和 CSS 支持，为此 LCUI 的部件布局和样式处理也做了些整改，基本算是重写了一遍。相信写过图形界面应用的程序员们都会有这样的体验，只用编程语言来描述界面内容是一件很麻烦的事情，写了一坨代码却只是实现一些简单的布局和效果，可读性差且不易维护。XML 和 CSS 能够解决这种问题，界面的布局和结构可以用 XML 描述，目前支持的标签很少，书写起来会比较简单，就像下面这样。\r\n\r\n``` xml\r\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003E\r\n\u003Clcui-app\u003E\r\n  \u003Cresource type=\"text/css\" src=\"helloworld.css\"/\u003E\r\n  \u003Cresource type=\"application/font-ttf\" src=\"C:/Windows/Fonts/comic.ttf\"/\u003E\r\n  \u003Cui\u003E\r\n    \u003Cwidget id=\"text-hello\" type=\"textview\" class=\"text-hello\"\u003EHello, World!\u003C/widget\u003E\r\n    \u003Cwidget id=\"edit\" type=\"textedit\"\u003EHello, World!\u003C/widget\u003E\r\n    \u003Cwidget id=\"btn-ok\" type=\"button\"\u003ESubmit\u003C/widget\u003E\r\n  \u003C/ui\u003E\r\n\u003C/lcui-app\u003E\r\n```\r\n\r\n至于 CSS，你可以用它来描述界面元素的视觉效果，受限于现有条件，目前只支持简单的 CSS 样式，并且某些 CSS 样式的实际效果会根据 LCUI 的现有情况做一定的调整，属于定制版的 CSS。除了一些简单的样式外，你还可以靠 CSS 来使用图标字体，例如：[ FontAwesome](http://fontawesome.io/icons/) 和 [Material Design Icons](https://materialdesignicons.com/)，当然，这些图标字体附带的 CSS 文件并不能直接在 LCUI 中使用，需要做些修改，具体可以参考[这篇文章](https://lcui.lc-soft.io/guide/zh-cn/font_and_text/render_icon_font.html)。\r\n\r\n对于比较复杂的界面，CSS 代码也会比较多，如果觉得这堆 CSS 代码写起来很麻烦，可以试试使用 [sass](http://sass-lang.com/guide)、[less](http://lesscss.org/) 和 [stylus](http://stylus-lang.com/) 这类 CSS 预处理器来简化编码，就像下面这样。\r\n\r\n![build-app-with-css](https://cloud.githubusercontent.com/assets/1730073/25092874/35dbe332-23c2-11e7-94d5-6e39c423cb85.png)\r\n\r\n当 CSS 代码比较多的时候，会很容易出现样式污染问题，在没有浏览器自带的开发人员工具情况下，这个问题处理起来会比较麻烦，但也不是没有办法，LCUI 提供了 [Widget_PrintStyleSheets()](https://github.com/lc-soft/LCUI/blob/9b00cb43a84d0b71351c74b15afd00cf23737468/src/gui/widget_style.c#L194) 函数，可以打印出指定部件应用到的所有样式表内容，结果类似于下面这样。\r\n\r\n``` text\r\nselector(1612994007) stylesheets begin\r\n\r\n[helloworld.css][rank: 11]\r\ntextview.text-hello {\r\n\tmargin-top: 25px;\r\n\tmargin-right: 25px;\r\n\tmargin-bottom: 25px;\r\n\tmargin-left: 25px;\r\n\tpadding-top: 25px;\r\n\tpadding-right: 25px;\r\n\tpadding-bottom: 25px;\r\n\tpadding-left: 25px;\r\n\tborder-top-width: 1px;\r\n\tborder-top-style: solid;\r\n\tborder-top-color: #000000;\r\n\tborder-right-width: 1px;\r\n\tborder-right-style: solid;\r\n\tborder-right-color: #000000;\r\n\tborder-bottom-width: 1px;\r\n\tborder-bottom-style: solid;\r\n\tborder-bottom-color: #000000;\r\n\tborder-left-width: 1px;\r\n\tborder-left-style: solid;\r\n\tborder-left-color: #000000;\r\n\tbackground-color: #fafafa;\r\n\tcolor: #8cc63f;\r\n\tfont-family (+): \"Comic Sans MS\";\r\n\tfont-size (+): 18px;\r\n\ttext-align (+): center;\r\n}\r\n\r\n[\u003Cnone\u003E][rank: 1]\r\n* {\r\n\tposition: static;\r\n\tdisplay: block;\r\n\twidth: auto;\r\n\theight: auto;\r\n\t此处省略部分内容 ...\r\n\tbackground-color: rgba(255,255,255,0);\r\n}\r\n[selector(1612994007) final stylesheet] {\r\n\t此处省略部分内容 ...\r\n}\r\nselector(1612994007) stylesheets end\r\n```\r\n\r\n### UWP 支持\r\n\r\n此版本虽然支持编译成 Windows 通用库/运行时组件，但并未包含 UWP 版的消息循环、键盘、鼠标、触控和图形输出的支持代码，这块的代码目前还在 [LC's Finder](https://github.com/lc-soft/LC-Finder/tree/develop/UWP) 项目内，如有需要可以套用该项目的相关代码，后续版本会将这块的代码整理进来。\r\n","author":{"name":"liu","username":"lc-soft","path":"/lc-soft","avatar_url":"https://foruda.gitee.com/avatar/1752322935190343944/568_lc-soft_1752322935.png!avatar30"},"attach_files":[{"download_url":"/lc-soft/LCUI/attach_files/79069/download/LCUI-1.0-alpha-for-windows.zip","name":"LCUI-1.0-alpha-for-windows.zip","cli_download_url":"https://gitee.com/lc-soft/LCUI/releases/download/v1.0-alpha/LCUI-1.0-alpha-for-windows.zip","censor_failed":false,"censor_tip":null}],"zip_download_url":"/lc-soft/LCUI/releases/tag/v1.0-alpha.zip","tar_download_url":"/lc-soft/LCUI/releases/tag/v1.0-alpha.tar.gz"}}}