YStudio Y++

工程结构

Y++ / YStudio 开发文档 · 一点滴

新建「窗口项目」或「DLL 项目」后,YStudio 会在所选位置创建与项目同名的目录。本文说明默认文件布局与常见扩展。

相关:语言基础 · 最小窗口程序 · 窗口 XML · 窗口布局 · YSS · 资源嵌入 · 自定义类型 · 自定义类 · 用户组件 · DLL / API · DLL 工程 · 静态模块

硬约束

  1. 工程根必须有 *.ysproj;窗口工程默认含 窗口/主窗口/主窗口.xml + 源代码/main.yc。
  2. 控件在代码里用 XML 名称 标识,不是标题文字。
  3. 资源统一 :/相对路径(相对工程「资源」目录);F5 会部署到 exe 旁。
  4. 读/写磁盘文件(读文件、INI、SQLite、工程内 DLL)写相对工程根,如 "cfg.ini"、"插件\\a.dll",不必拼接 取程序目录()。
  5. DLL 工程("type": "dll")无 窗口/,用 导出 + .yex,见 dll-project.md。
  6. 模块工程("type": "module")同样无窗口,编译为加密 .ys 静态包,见 ys-module.md。
  7. 不要手改 发布/ 当源码目录。

默认目录树

{工程名}/
  {工程名}.ysproj          # 工程描述(JSON:名称、架构、类型等)
  源代码/
    main.yc                # 主逻辑 / 控件事件(新建时自动生成)
    global.yc              # 全局变量(新建时自动生成)
    constants.yc           # 全局常量(新建时自动生成)
    *.yt / *.ypp / *.yp    # 按需:自定义类型 / 类 / API 声明
    *.yex                  # DLL / 模块工程:导出清单
    …                      # 窗口 / DLL 工程可在.ysproj 引用 *.ys 模块
  窗口/
    主窗口/
      主窗口.xml           # 主窗布局与控件属性
      主窗口.yss           # 可选,与 XML 同目录的样式
    {其它窗}/
      {其它窗}.xml
      {其它窗}.yc          # 次级窗事件源(可与主逻辑并列)
  组件/                    # 可选:用户组件定义(*.yuc);可从其它工程拷贝复用,见 usercompose.md
    {组件名}.yuc
  资源/
    {窗体名}.yss           # 推荐的 YSS 位置(F5 会部署到 exe 旁)
    img/ …                 # 图片、脚本、数据等;代码中写 :/相对路径
  发布/                    # 编译 / 发布输出(运行后生成,勿手改为源)

DLL 项目(.ysproj 中 "type": "dll")无 窗口/,用 导出 "Name" 产出 .dll,见 dll-project.md。

模块项目("type": "module")无窗口,用同样的 导出 产出加密 .ys,可被窗口/DLL 静态链接,见 ys-module.md。

文件类型

扩展名 用途
.ysproj 工程文件;双击或「打开工程」用
.xml 窗体布局;设计器读写
.yc Y++ 源码:事件、函数、业务逻辑
.yss 界面样式表(类 CSS)
.yt 自定义类型(值语义结构体)
.ypp 自定义类
.yp DLL / 系统 API 声明
.yex DLL / 模块导出清单
.ys 加密静态模块包(宿主工程「引用模块」;不可当源码打开)
.yuc 用户组件定义(工程 组件/;设计器「另存为用户组件」或从其它工程拷贝);见 usercompose.md

在工程树 源代码 上右键可新建 .yc / .yt / .ypp / .yp;新建窗口会在 窗口/{窗体名}/ 下生成对应 XML(及可选 YSS)。用户组件另存(或拷入 组件/*.yuc)后会出现在工具箱「用户组件」分组;属性 / 事件 / .yuc 字段说明见 usercompose.md。

新建时自动生成的内容

路径 说明
{工程名}.ysproj type=window,含架构(x86 / x64)等
源代码/main.yc 事件处理入口;注释里有简易示例
源代码/global.yc 放全局变量
源代码/constants.yc 放全局常量
窗口/主窗口/主窗口.xml 空白主窗(默认约 420×280)
资源/ 空目录,用于图片、YSS、嵌入文件等

写代码时怎么找文件

目的 路径 / 做法
改界面 窗口/{窗体名}/{窗体名}.xml(设计视图)
写事件 主窗多在 源代码/main.yc;次级窗可在 窗口/{窗体名}/{窗体名}.yc
写样式 推荐 资源/{窗体名}.yss;运行时默认加载 exe 旁同名文件
读资源 :/相对资源路径,见 资源嵌入
读/写工程文件 "cfg.ini"、"data\\demo.db" 相对工程根;不必 合并路径(取程序目录(), …)
调系统 API 源代码/*.yp,见 dllapi.md
自定义结构/类 .yt / .ypp

多窗口

新建窗口后目录形如 窗口/登录/、窗口/工作台/。跨窗:载入(窗口名) / 关闭(窗口名)(无引号)。详见 多窗口设计。

易错对照

错误 正确
只发布 exe、漏 img/.yss 带上发布目录整棵资源
代码里写按钮标题当标识 用 XML「名称」
DLL 工程去找设计画布 DLL 工程默认代码视图,无窗口树