[{"data":1,"prerenderedAt":1016},["ShallowReactive",2],{"doc-\u002Fdocs\u002Ftutorial\u002Feduwin-hello":3},{"id":4,"title":5,"body":6,"description":16,"extension":1010,"meta":1011,"navigation":205,"path":1012,"seo":1013,"stem":1014,"__hash__":1015},"content\u002Fdocs\u002Ftutorial\u002Feduwin-hello.md","Hello eduwin —— 第一个 GUI 程序",{"type":7,"value":8,"toc":990},"minimark",[9,13,17,20,25,30,33,56,68,78,92,96,110,114,117,121,131,158,162,165,171,174,178,185,440,444,455,459,464,475,482,552,565,570,577,581,596,617,621,626,641,656,683,709,713,736,751,763,767,773,779,802,817,823,827,837,843,849,853,856,867,870,874,972,974,986],[10,11,5],"h1",{"id":12},"hello-eduwin-第一个-gui-程序",[14,15,16],"p",{},"本教程将带你从零开始，编写并运行第一个 eduwin 程序。",[18,19],"hr",{},[21,22,24],"h2",{"id":23},"_1-准备工作","1. 准备工作",[26,27,29],"h3",{"id":28},"_11-下载与解压","1.1 下载与解压",[14,31,32],{},"eduwin 只需两个条件：",[34,35,36,44],"ul",{},[37,38,39,43],"li",{},[40,41,42],"strong",{},"Windows 7\u002F8\u002F10\u002F11"," 操作系统",[37,45,46,49,50,55],{},[40,47,48],{},"MSVC 编译器","（Visual Studio 2022 Build Tools，安装教程见",[51,52,54],"a",{"href":53},"\u002Fdownload","下载页面","）",[14,57,58,59,63,64,67],{},"从下载页面获取 ",[60,61,62],"code",{},"eduwin_pub.zip","，解压后目录结构如下（",[40,65,66],{},"请先看清这个结构，后面所有路径都与此相关","）：",[69,70,75],"pre",{"className":71,"code":73,"language":74},[72],"language-text","eduwin_pub\u002F                  ← 下载包根目录\n├── eduwin\u002F                  ← eduwin 库文件\n│   ├── include\u002F             #   头文件（eduwin.h 在这里）\n│   ├── lib\u002F                 #   静态库（eduwin.lib 在这里）\n│   └── eduwin.manifest      #   Windows 视觉样式清单文件\n├── samples\u002F                 ← 示例项目\n│   ├── hello_demo\u002F          #   本教程对应的示例\n│   ├── sqlite_demo\u002F\n│   └── ...\n└── ...\n","text",[60,76,73],{"__ignoreMap":77},"",[79,80,81],"blockquote",{},[14,82,83,84,87,88,91],{},"本文中，我们假设 ",[60,85,86],{},"eduwin_pub\u002F"," 解压到了 ",[60,89,90],{},"D:\\XTU\\c-train\\eduwin_pub\\","，后文以此为例。",[26,93,95],{"id":94},"_12-关于编译器","1.2 关于编译器",[14,97,98,99,102,103,106,107],{},"eduwin ",[40,100,101],{},"仅官方支持 MSVC","（Visual Studio 编译器）。MinGW（GCC 的 Windows 移植版）理论上可以编译 C 代码，但因为 eduwin 使用了 MSVC 特有的资源编译（",[60,104,105],{},".rc"," 文件）和链接器配置，用 MinGW 需要额外写大量的兼容脚本，非常繁琐，不推荐。",[40,108,109],{},"请直接使用 MSVC。",[21,111,113],{"id":112},"_2-创建项目","2. 创建项目",[14,115,116],{},"有两种方式，推荐初学者使用方式一。",[26,118,120],{"id":119},"方式一直接复制-samples推荐","方式一：直接复制 samples（推荐）",[14,122,123,126,127,130],{},[60,124,125],{},"samples\u002F"," 目录下有多个可直接编译运行的示例项目。以 ",[60,128,129],{},"hello_demo"," 为例：",[132,133,134,145,151],"ol",{},[37,135,136,137,140,141,144],{},"把 ",[60,138,139],{},"samples\u002Fhello_demo\u002F"," ",[40,142,143],{},"整个文件夹","复制出来",[37,146,147,148,55],{},"放到你的工作目录，可重命名为你的项目名（比如 ",[60,149,150],{},"my_project\u002F",[37,152,153,154,157],{},"修改里面的 ",[60,155,156],{},".c"," 文件开始编程",[26,159,161],{"id":160},"方式二从零搭建","方式二：从零搭建",[14,163,164],{},"你也可以在工作目录下手动创建项目文件：",[69,166,169],{"className":167,"code":168,"language":74},[72],"my_project\u002F\n├── app.ico           # 程序图标（可以从 samples 复制）\n├── app.rc            # 资源文件（从 samples 复制并修改）\n├── build.bat         # 编译脚本（从 samples 复制并修改）\n├── hello.c           # 我们的代码\n",[60,170,168],{"__ignoreMap":77},[14,172,173],{},"接下来的讲解以方式二为例（两种方式的原理完全一样，方式一只是省去了文件复制步骤）。",[21,175,177],{"id":176},"_3-编写代码","3. 编写代码",[14,179,180,181,184],{},"创建 ",[60,182,183],{},"hello.c","，写入以下内容：",[69,186,190],{"className":187,"code":188,"language":189,"meta":77,"style":77},"language-c shiki shiki-themes github-light github-dark","#include \"eduwin.h\"\n\nstatic HWND text;   \u002F* 文本框 *\u002F\nstatic HWND label;  \u002F* 标签 *\u002F\n\n\u002F* 点击按钮时，把文本框内容显示到标签上 *\u002F\nstatic void on_click(void *data)\n{\n    const WCHAR *s = get_text(text);\n    set_text(label, s);\n    set_text(text, L\"\");\n}\n\nint main(void)\n{\n    if (init_app() != 0)\n    {\n        alert(L\"错误\", L\"eduwin 初始化失败\");\n        return 1;\n    }\n\n    HWND win = create_window(L\"Hello eduwin\", 400, 200);\n    if (!win)\n    {\n        alert(L\"错误\", L\"创建窗口失败\");\n        return 1;\n    }\n\n    \u002F* 文本框 *\u002F\n    text = create_text(win, L\"请输入文字\", 20, 20, 250, 24);\n\n    \u002F* 按钮 *\u002F\n    HWND btn = create_button(win, L\"显示\", 280, 20, 80, 24);\n\n    \u002F* 标签（用来显示输入的文字） *\u002F\n    label = create_label(win, L\"\", 20, 60, 340, 80);\n\n    on_button_click(btn, on_click, NULL);\n\n    show_window(win);\n    run_app();\n    return 0;\n}\n","c",[60,191,192,200,207,213,219,224,230,236,242,248,254,260,266,271,277,282,288,294,300,306,312,317,323,329,334,340,345,350,355,361,367,372,378,384,389,395,401,406,412,417,423,429,435],{"__ignoreMap":77},[193,194,197],"span",{"class":195,"line":196},"line",1,[193,198,199],{},"#include \"eduwin.h\"\n",[193,201,203],{"class":195,"line":202},2,[193,204,206],{"emptyLinePlaceholder":205},true,"\n",[193,208,210],{"class":195,"line":209},3,[193,211,212],{},"static HWND text;   \u002F* 文本框 *\u002F\n",[193,214,216],{"class":195,"line":215},4,[193,217,218],{},"static HWND label;  \u002F* 标签 *\u002F\n",[193,220,222],{"class":195,"line":221},5,[193,223,206],{"emptyLinePlaceholder":205},[193,225,227],{"class":195,"line":226},6,[193,228,229],{},"\u002F* 点击按钮时，把文本框内容显示到标签上 *\u002F\n",[193,231,233],{"class":195,"line":232},7,[193,234,235],{},"static void on_click(void *data)\n",[193,237,239],{"class":195,"line":238},8,[193,240,241],{},"{\n",[193,243,245],{"class":195,"line":244},9,[193,246,247],{},"    const WCHAR *s = get_text(text);\n",[193,249,251],{"class":195,"line":250},10,[193,252,253],{},"    set_text(label, s);\n",[193,255,257],{"class":195,"line":256},11,[193,258,259],{},"    set_text(text, L\"\");\n",[193,261,263],{"class":195,"line":262},12,[193,264,265],{},"}\n",[193,267,269],{"class":195,"line":268},13,[193,270,206],{"emptyLinePlaceholder":205},[193,272,274],{"class":195,"line":273},14,[193,275,276],{},"int main(void)\n",[193,278,280],{"class":195,"line":279},15,[193,281,241],{},[193,283,285],{"class":195,"line":284},16,[193,286,287],{},"    if (init_app() != 0)\n",[193,289,291],{"class":195,"line":290},17,[193,292,293],{},"    {\n",[193,295,297],{"class":195,"line":296},18,[193,298,299],{},"        alert(L\"错误\", L\"eduwin 初始化失败\");\n",[193,301,303],{"class":195,"line":302},19,[193,304,305],{},"        return 1;\n",[193,307,309],{"class":195,"line":308},20,[193,310,311],{},"    }\n",[193,313,315],{"class":195,"line":314},21,[193,316,206],{"emptyLinePlaceholder":205},[193,318,320],{"class":195,"line":319},22,[193,321,322],{},"    HWND win = create_window(L\"Hello eduwin\", 400, 200);\n",[193,324,326],{"class":195,"line":325},23,[193,327,328],{},"    if (!win)\n",[193,330,332],{"class":195,"line":331},24,[193,333,293],{},[193,335,337],{"class":195,"line":336},25,[193,338,339],{},"        alert(L\"错误\", L\"创建窗口失败\");\n",[193,341,343],{"class":195,"line":342},26,[193,344,305],{},[193,346,348],{"class":195,"line":347},27,[193,349,311],{},[193,351,353],{"class":195,"line":352},28,[193,354,206],{"emptyLinePlaceholder":205},[193,356,358],{"class":195,"line":357},29,[193,359,360],{},"    \u002F* 文本框 *\u002F\n",[193,362,364],{"class":195,"line":363},30,[193,365,366],{},"    text = create_text(win, L\"请输入文字\", 20, 20, 250, 24);\n",[193,368,370],{"class":195,"line":369},31,[193,371,206],{"emptyLinePlaceholder":205},[193,373,375],{"class":195,"line":374},32,[193,376,377],{},"    \u002F* 按钮 *\u002F\n",[193,379,381],{"class":195,"line":380},33,[193,382,383],{},"    HWND btn = create_button(win, L\"显示\", 280, 20, 80, 24);\n",[193,385,387],{"class":195,"line":386},34,[193,388,206],{"emptyLinePlaceholder":205},[193,390,392],{"class":195,"line":391},35,[193,393,394],{},"    \u002F* 标签（用来显示输入的文字） *\u002F\n",[193,396,398],{"class":195,"line":397},36,[193,399,400],{},"    label = create_label(win, L\"\", 20, 60, 340, 80);\n",[193,402,404],{"class":195,"line":403},37,[193,405,206],{"emptyLinePlaceholder":205},[193,407,409],{"class":195,"line":408},38,[193,410,411],{},"    on_button_click(btn, on_click, NULL);\n",[193,413,415],{"class":195,"line":414},39,[193,416,206],{"emptyLinePlaceholder":205},[193,418,420],{"class":195,"line":419},40,[193,421,422],{},"    show_window(win);\n",[193,424,426],{"class":195,"line":425},41,[193,427,428],{},"    run_app();\n",[193,430,432],{"class":195,"line":431},42,[193,433,434],{},"    return 0;\n",[193,436,438],{"class":195,"line":437},43,[193,439,265],{},[21,441,443],{"id":442},"_4-编译运行","4. 编译运行",[14,445,446,447,450,451,454],{},"打开 ",[60,448,449],{},"build.bat","（从 ",[60,452,453],{},"samples\u002Fhello_demo\u002Fbuild.bat"," 复制而来），其中有 4 个地方需要你理解和修改。",[26,456,458],{"id":457},"_41-修改-vcvars-路径","4.1 修改 VCVARS 路径",[14,460,461,463],{},[60,462,449],{}," 中有这样一行：",[69,465,469],{"className":466,"code":467,"language":468,"meta":77,"style":77},"language-bat shiki shiki-themes github-light github-dark","set \"VCVARS=C:\\Program Files (x86)\\Microsoft Visual Studio\\18\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat\"\n","bat",[60,470,471],{"__ignoreMap":77},[193,472,473],{"class":195,"line":196},[193,474,467],{},[14,476,477,478,481],{},"你需要根据自己安装的 VS 版本，把路径中 ",[60,479,480],{},"\\18\\"," 那一段换成对应的文件夹名。下表列出了常见版本：",[483,484,485,498],"table",{},[486,487,488],"thead",{},[489,490,491,495],"tr",{},[492,493,494],"th",{},"你安装的版本",[492,496,497],{},"对应的路径（复制后替换即可）",[499,500,501,512,522,532,542],"tbody",{},[489,502,503,507],{},[504,505,506],"td",{},"VS 2026 Build Tools",[504,508,509],{},[60,510,511],{},"C:\\Program Files (x86)\\Microsoft Visual Studio\\18\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat",[489,513,514,517],{},[504,515,516],{},"VS 2022 Build Tools",[504,518,519],{},[60,520,521],{},"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat",[489,523,524,527],{},[504,525,526],{},"VS 2022 Community",[504,528,529],{},[60,530,531],{},"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat",[489,533,534,537],{},[504,535,536],{},"VS 2019 Build Tools",[504,538,539],{},[60,540,541],{},"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat",[489,543,544,547],{},[504,545,546],{},"VS 2019 Community",[504,548,549],{},[60,550,551],{},"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat",[14,553,554,555,558,559],{},"找到自己对应的那一行，复制整条路径，粘贴替换掉 ",[60,556,557],{},"VCVARS="," 后面的内容即可。",[40,560,561,562,564],{},"即使你直接用 ",[60,563,125],{}," 里的例子，也必须先改这里。",[566,567,569],"h4",{"id":568},"找不到-vcvars64bat-怎么办","找不到 vcvars64.bat 怎么办？",[14,571,572,573,576],{},"如果用 Everything 搜索 ",[60,574,575],{},"vcvars64.bat","，能直接找到真实路径，比对着表格猜更快。",[26,578,580],{"id":579},"_42-修改-source-和-program","4.2 修改 SOURCE 和 PROGRAM",[69,582,584],{"className":466,"code":583,"language":468,"meta":77,"style":77},"set SOURCE=hello.c     ← 你的 C 源文件名\nset PROGRAM=hello.exe  ← 编译后输出的 exe 文件名\n",[60,585,586,591],{"__ignoreMap":77},[193,587,588],{"class":195,"line":196},[193,589,590],{},"set SOURCE=hello.c     ← 你的 C 源文件名\n",[193,592,593],{"class":195,"line":202},[193,594,595],{},"set PROGRAM=hello.exe  ← 编译后输出的 exe 文件名\n",[34,597,598,607],{},[37,599,600,603,604,606],{},[60,601,602],{},"SOURCE","：你写了哪个 ",[60,605,156],{}," 文件，这里就填哪个文件名",[37,608,609,612,613,616],{},[60,610,611],{},"PROGRAM","：你想生成什么名字的 ",[60,614,615],{},".exe","，随便取",[26,618,620],{"id":619},"_43-理解编译命令中的相对路径重点","4.3 理解编译命令中的相对路径（重点）",[14,622,623,625],{},[60,624,453],{}," 中的编译命令如下：",[69,627,629],{"className":466,"code":628,"language":468,"meta":77,"style":77},"cl \u002Fnologo \u002FW3 \u002Futf-8 \u002Fstd:c17 \u002FI..\\..\\eduwin\\include \u002Fc \"%SOURCE%\"\nlink \u002Fnologo \"%SOURCE:.c=.obj%\" app.res ..\\..\\eduwin\\lib\\eduwin.lib ...\n",[60,630,631,636],{"__ignoreMap":77},[193,632,633],{"class":195,"line":196},[193,634,635],{},"cl \u002Fnologo \u002FW3 \u002Futf-8 \u002Fstd:c17 \u002FI..\\..\\eduwin\\include \u002Fc \"%SOURCE%\"\n",[193,637,638],{"class":195,"line":202},[193,639,640],{},"link \u002Fnologo \"%SOURCE:.c=.obj%\" app.res ..\\..\\eduwin\\lib\\eduwin.lib ...\n",[14,642,643,644,647,648,651,652,655],{},"这里的 ",[60,645,646],{},"..\\..\\eduwin\\include"," 和 ",[60,649,650],{},"..\\..\\eduwin\\lib\\eduwin.lib"," 是",[40,653,654],{},"相对路径","。",[14,657,658,661,662,664,665,667,668,671,672,674,675,678,679,682],{},[60,659,660],{},".."," 表示\"退回上一级目录\"。",[60,663,449],{}," 在 ",[60,666,139],{}," 里，",[60,669,670],{},"..\\..\\"," 就是从那里往上退两级，到达 ",[60,673,86],{}," 根目录，然后再进 ",[60,676,677],{},"eduwin\\include\\"," 或 ",[60,680,681],{},"eduwin\\lib\\","。所以：",[34,684,685,698],{},[37,686,687,690,691,694,695],{},[60,688,689],{},"\u002FI..\\..\\eduwin\\include"," 告诉编译器去 ",[60,692,693],{},"eduwin_pub\u002Feduwin\u002Finclude\u002F"," 找 ",[60,696,697],{},"eduwin.h",[37,699,700,702,703,694,706],{},[60,701,650],{}," 告诉链接器去 ",[60,704,705],{},"eduwin_pub\u002Feduwin\u002Flib\u002F",[60,707,708],{},"eduwin.lib",[566,710,712],{"id":711},"如果项目位置变了呢","如果项目位置变了呢？",[14,714,715,716,719,720,664,722,724,725,735],{},"假如你把项目复制到了 ",[60,717,718],{},"D:\\my_project\\","，而 ",[60,721,86],{},[60,723,90],{},"，那么相对路径就变了。你需要根据实际情况调整——核心原则是：",[40,726,727,728,730,731,734],{},"确保 ",[60,729,646],{}," 能正确指向 ",[60,732,733],{},"eduwin\u002Finclude\u002F"," 目录","。如果不确定，可以用绝对路径替代，比如：",[69,737,739],{"className":466,"code":738,"language":468,"meta":77,"style":77},"cl \u002Fnologo \u002FW3 \u002Futf-8 \u002Fstd:c17 \u002FID:\\XTU\\c-train\\eduwin_pub\\eduwin\\include \u002Fc \"%SOURCE%\"\nlink \u002Fnologo \"%SOURCE:.c=.obj%\" app.res D:\\XTU\\c-train\\eduwin_pub\\eduwin\\lib\\eduwin.lib ...\n",[60,740,741,746],{"__ignoreMap":77},[193,742,743],{"class":195,"line":196},[193,744,745],{},"cl \u002Fnologo \u002FW3 \u002Futf-8 \u002Fstd:c17 \u002FID:\\XTU\\c-train\\eduwin_pub\\eduwin\\include \u002Fc \"%SOURCE%\"\n",[193,747,748],{"class":195,"line":202},[193,749,750],{},"link \u002Fnologo \"%SOURCE:.c=.obj%\" app.res D:\\XTU\\c-train\\eduwin_pub\\eduwin\\lib\\eduwin.lib ...\n",[79,752,753],{},[14,754,755,756,759,760,762],{},"绝对路径就是完整的路径（如 ",[60,757,758],{},"D:\\...\\eduwin.lib","），不依赖于\"当前在哪个目录\"，不容易搞混。缺点是如果移动了 ",[60,761,86],{}," 的位置或换到别人电脑上，就需要重新改。",[26,764,766],{"id":765},"_44-apprc-中的路径","4.4 app.rc 中的路径",[14,768,769,772],{},[60,770,771],{},"app.rc"," 是资源文件，用记事本打开会看到：",[69,774,777],{"className":775,"code":776,"language":74},[72],"1 ICON \"app.ico\"\n1 24 \"..\\\\..\\\\eduwin\\\\eduwin.manifest\"\n",[60,778,776],{"__ignoreMap":77},[34,780,781,791],{},[37,782,783,784,787,788,790],{},"第 1 行：指定程序图标为 ",[60,785,786],{},"app.ico","（跟 ",[60,789,771],{}," 同目录）",[37,792,793,794,797,798,801],{},"第 2 行：引用 ",[60,795,796],{},"eduwin.manifest","（Windows 视觉样式清单），这里的 ",[60,799,800],{},"..\\\\..\\\\eduwin\\\\eduwin.manifest"," 同样是相对路径，原理与上一节相同",[79,803,804],{},[14,805,806,807,809,810,813,814,655],{},"注意：",[60,808,105],{}," 文件中路径使用双反斜杠 ",[60,811,812],{},"\\\\","，这是资源编译器的语法要求，意思等同于单反斜杠 ",[60,815,816],{},"\\",[14,818,819,820,822],{},"如果 ",[60,821,86],{}," 的相对位置变了，这里也要同步修改。",[26,824,826],{"id":825},"_45-编译","4.5 编译",[14,828,829,830,832,833,836],{},"确认以上路径都正确后，双击 ",[60,831,449],{},"，等待编译完成。目录下会生成 ",[60,834,835],{},"hello.exe","：",[69,838,841],{"className":839,"code":840,"language":74},[72],"my_project\u002F\n├── hello.c\n├── build.bat\n├── hello.obj\n└── hello.exe    ← 这就是我们的程序\n",[60,842,840],{"__ignoreMap":77},[14,844,845,846,848],{},"双击 ",[60,847,835],{}," 运行！",[21,850,852],{"id":851},"_5-效果展示","5. 效果展示",[14,854,855],{},"运行后会看到一个 400×200 的窗口：",[34,857,858,861,864],{},[37,859,860],{},"上边是一个文本框，可以输入文字",[37,862,863],{},"右边是一个\"显示\"按钮",[37,865,866],{},"下边是一个标签区域",[14,868,869],{},"在文本框输入文字后点击\"显示\"，标签会显示你输入的内容，同时文本框清空。",[21,871,873],{"id":872},"_6-代码说明","6. 代码说明",[483,875,876,886],{},[486,877,878],{},[489,879,880,883],{},[492,881,882],{},"函数",[492,884,885],{},"说明",[499,887,888,898,908,918,928,938,948,958],{},[489,889,890,895],{},[504,891,892],{},[60,893,894],{},"init_app()",[504,896,897],{},"初始化 eduwin 框架，必须最先调用",[489,899,900,905],{},[504,901,902],{},[60,903,904],{},"create_window()",[504,906,907],{},"创建一个窗口，返回窗口句柄",[489,909,910,915],{},[504,911,912],{},[60,913,914],{},"create_text()",[504,916,917],{},"创建文本框控件",[489,919,920,925],{},[504,921,922],{},[60,923,924],{},"create_button()",[504,926,927],{},"创建按钮控件，最后一个参数是回调函数",[489,929,930,935],{},[504,931,932],{},[60,933,934],{},"on_button_click()",[504,936,937],{},"注册按钮的点击事件回调",[489,939,940,945],{},[504,941,942],{},[60,943,944],{},"show_window()",[504,946,947],{},"显示窗口",[489,949,950,955],{},[504,951,952],{},[60,953,954],{},"run_app()",[504,956,957],{},"进入消息循环，阻塞运行",[489,959,960,969],{},[504,961,962,965,966],{},[60,963,964],{},"get_text()"," \u002F ",[60,967,968],{},"set_text()",[504,970,971],{},"获取\u002F设置控件的文字内容",[18,973],{},[14,975,976,977,981,982,655],{},"现在你已经成功跑通了第一个 eduwin 程序！接下来可以查看更完整的",[51,978,980],{"href":979},"#","示例项目","，或阅读完整的 ",[51,983,985],{"href":984},"\u002Fdocs\u002Fapi\u002Feduwin-app-api","API 参考",[987,988,989],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":77,"searchDepth":202,"depth":202,"links":991},[992,996,1000,1001,1008,1009],{"id":23,"depth":202,"text":24,"children":993},[994,995],{"id":28,"depth":209,"text":29},{"id":94,"depth":209,"text":95},{"id":112,"depth":202,"text":113,"children":997},[998,999],{"id":119,"depth":209,"text":120},{"id":160,"depth":209,"text":161},{"id":176,"depth":202,"text":177},{"id":442,"depth":202,"text":443,"children":1002},[1003,1004,1005,1006,1007],{"id":457,"depth":209,"text":458},{"id":579,"depth":209,"text":580},{"id":619,"depth":209,"text":620},{"id":765,"depth":209,"text":766},{"id":825,"depth":209,"text":826},{"id":851,"depth":202,"text":852},{"id":872,"depth":202,"text":873},"md",{},"\u002Fdocs\u002Ftutorial\u002Feduwin-hello",{"title":5,"description":16},"docs\u002Ftutorial\u002Feduwin-hello","5q2sDS3vV7U_l1VvPC9CECH7OZTubYL8T_Kam0k_v3E",1782488679844]