Chapter 227 · 文档控件扩展

Markdown 三模式

Source、Visual、Live MD 三种投影视图读的是同一份文档、同一条修订历史——切模式不丢撤销。

227

切换投影

// 编辑器创建时选起点
ed.iMode = XUI_DOC_SOURCE_TEXT;
xuiDocumentEditorCreate(pContext, &ed, &pEditor);

// 运行时切换:源码 / 可视化 / 实时 MD
xuiDocumentViewSetMode(pEditor, XUI_DOC_VISUAL);
xuiDocumentViewSetMode(pEditor, XUI_DOC_LIVE_MARKDOWN);

Visual 模式下 Bold/Italic 等按钮变成结构化命令(直接改文档树);Source 模式编辑纯文本;Live MD 把当前顶层容器显示为源码、其余容器照常渲染——三种模式共享修订与 xuiDocumentUndo 历史。

预览与图片资源

// 只读预览:与编辑器共用同一 View 描述
xui_doc_view_desc_t vd = ed.tView;
xuiDocumentViewCreate(pContext, &vd, &pPreview);

// 图片:同步解码或异步加载(不卡 UI 线程)
xuiDocumentImageResourceLoadFile(pContext, "demo.surface", "res/msgbox_info.png", NULL, &pRes);
xuiDocumentImageResourceLoadFileAsync(pContext, "demo.async", "res/msgbox_info.png", NULL, &pReq);
// Poll 直到不再是 BUSY;缺图时渲染占位框而非布局抖动

示例与验证

$ call examples\xui_document\build.bat
$ build\xui_document.exe # 三栏:富文本 / MD 编辑 / 实时预览
$ build\xui_document.exe --verify
# Ctrl+Z/Y 撤销重做 · Ctrl+B/I 格式 · Ctrl+滚轮缩放 · 旧 xui_richedit 示例已并入本入口

自动化验证覆盖渲染、异步发布次序(源先变、预览后变)与缺图占位三条链路。至此 227 章教程全部完成——回头见目录页。