Code date creation 新一代 C++ 图形化数据生成器 v8.0.0 · 幻想

技术内幕 · 06 / 16

内嵌前端与桥接层

网页界面被编译进 exe,分发时只有一个文件;离线时还能降级成纯网页版。

16 个章节 37 段代码 21 张对照表 全部对着源码核对

前端页面没有以「一堆 html/js/css 文件」的形式散在安装目录里,而是作为资源编进了 exe。这样用户拿到的就是一个可执行文件,不会出现「误删了某个 js 导致界面打不开」。

资源内嵌

CPP10 行
static string ReadRes(const char* name) {
    HMODULE h = GetModuleHandleW(nullptr);
    HRSRC   hr = FindResourceA(h, name, RT_RCDATA);
    if (!hr) return "";
    HGLOBAL hg = LoadResource(h, hr);
    if (!hg) return "";
    DWORD sz = SizeofResource(h, hr);
    const char* p = (const char*)LockResource(hg);
    return (p && sz) ? string(p, (size_t)sz) : string();
}
资源名对应文件
IDR_INDEXindex.html(整个界面,含内联的样式与渲染库)
IDR_BRIDGEcpp_bridge.js(桥接层)
IDR_CSSapp.css

取资源失败时回退到 exe 同目录读磁盘文件,方便开发期调试 —— 改前端不必每次都重新编译:

CPP12 行
static string ServeFrontend(const string& path) {
    const char* res = nullptr;
    if (path == "/" || path == "/index.html") res = "IDR_INDEX";
    else if (path == "/cpp_bridge.js")        res = "IDR_BRIDGE";
    else if (path == "/app.css")              res = "IDR_CSS";
    if (res) { string s = ReadRes(res); if (!s.empty()) return s; }
    if (path.size() > 1) {                    // 回退磁盘(仅开发期会走到)
        string s = ServeFile(g_exeDir + path);
        if (!s.empty()) return s;
    }
    return "";
}

桥接层:让同一份前端适配两种运行环境

前端本身可以在两种状态下工作 —— 有本机后端,或没有(纯网页版)。桥接层负责探测并切换:

JS24 行
var BASE = 'http://127.0.0.1:18889';

function post(path, data) {
  return fetch(BASE + path, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data || {}),
  }).then(function (r) { return r.json(); });
}

function enableCpp(info) {
  if (started) return;
  started = true;
  MODE = 'qt';                       // 复用前端已有的「本地操作」分支
  window.CPP_BACKEND = true;

  // 把原本走浏览器下载/内存的操作,改成调本机后端做真实文件与编译
  Object.assign(webBridge, {
    gen:       async function (p) { var j = await post('/api/generate',  {...}); ... },
    renameAll: async function ()  { var j = await post('/api/rename',    {...}); ... },
    bigFile:   async function ()  { var j = await post('/api/bigfile',   {...}); ... },
    ...
  });
}
  • 后端在线 —— 探到 127.0.0.1:18889 就切换为本地模式,生成本机文件、调用本机 g++、打开本机对话框
  • 后端不在 —— 保持纯网页模式:用浏览器存储与下载完成受限功能,页面依旧可用

八个功能模块

模块内容
生成随机生成、分组生成、大文件、批量改名、生成器代码模式
自编译指定 AC 代码,批量产出 .out
打包 ZIP选源目录与输出位置,一键压缩
实用工具系统小工具集合
账号注册、登录、设备激活、次数查询
私信与其它用户收发消息
AI 助手双模式对话界面
设置g++ 路径、主题、云端配置

Code date creation(CDC)是作者 starryfast 独立开发的 C++ 图形化数据生成器,GitCode 组织「Code date creation编写」。生成器统一按 C++23 标准编译:随机模式按值域批量造点,自编译模式把你的 AC 代码直接跑成 .out,再一键打包成可提交的 zip —— 从造数据到交题,一个 exe 全包。v8.0.0「幻想」起内置了幻想增强引擎,提供 20 项数据校验与分析能力,全部在本机完成,不联网、不上传。

交流

ACGO 发布帖 B 站空间 272215275@qq.com QQ 272215275 MC gm.rainplay.cn:15415

© 2026 Code date creation编写 · 作者 starryfast · 本站与 cdc.mjhcsp.xyz 同源

市面上的盗版程序可能携带病毒,请仅从本页或官方代码仓获取安装包。