ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

NAppGUI Hello World实战:从零手写第一个跨平台C语言桌面应用(附完整源码)

NAppGUI Hello World实战:从零手写第一个跨平台C语言桌面应用(附完整源码) NAppGUI Hello World实战从零手写第一个跨平台C语言桌面应用附完整源码【免费下载链接】nappgui_srcSDK for building cross-platform desktop apps in ANSI-C项目地址: https://gitcode.com/gh_mirrors/na/nappgui_src想用一门语言同时开发 Windows、macOS 和 Linux 桌面应用NAppGUI 就是这样一个轻量级 C 语言 SDK让你只用标准 ANSI-C 就能写出原生桌面应用。本教程将带你从环境配置、项目创建到代码编写一步步完成第一个 NAppGUI Hello World 程序并附上完整源码与构建运行方法新手也能轻松上手。一、NAppGUI 是什么为什么值得一试NAppGUI 是一个开源的跨平台桌面应用开发 SDK核心卖点非常明确纯 C 语言。它不依赖 C、不依赖 Electron 这类庞大的运行时而是直接调用各平台的原生控件Windows 的 Win32、macOS 的 Cocoa、Linux 的 GTK编译产物是体积小、启动快的原生程序。更妙的是NAppGUI 内置了完整的界面布局系统类似网格布局、事件驱动机制、绘图引擎和2D 物理碰撞检测从简单的工具软件到带自绘界面的专业应用它都能胜任。目前最新版本为 1.6.2采用 MIT 许可证可以放心用于商业项目。二、环境准备三平台一键安装依赖NAppGUI 的构建工具链非常简单CMake 任一主流 C 编译器即可。平台必备工具附加依赖库WindowsVisual Studio含 C 组件、CMake无需额外安装macOSXcode、CMake无需额外安装Linuxgcc、make、git、CMakelibgtk-3-dev、libcurl4-openssl-dev 等Linux 用户请在终端执行sudo apt-get install build-essential git cmake sudo apt-get install libgtk-3-dev libcurl4-openssl-dev sudo apt-get install libwebkit2gtk-4.1-dev mesa-common-dev libglu1-mesa-dev libegl1-mesa-dev 提示libgtk-3-dev是 GUI 必需libcurl用于 HTTP 请求webkit用于 WebView不需要时可以跳过。三、快速获取源码与官方示例获取 NAppGUI 源码含全部官方示例只需一条命令git clone --depth 1 https://gitcode.com/gh_mirrors/na/nappgui_src.git cd nappgui_src仓库结构非常清晰核心代码位于 src/ 目录按功能拆分为sewer基础工具、osbs操作系统抽象、core核心库、guiGUI 框架、osgui平台控件层等模块。所有示例都在 demo/ 目录下其中 demo/hello/ 就是我们今天的实战目标。四、手写 Hello World完整源码逐行解读在 demo/hello/main.c 中官方已经提供了一个精炼的 Hello World 示例。但为了让你彻底搞懂我们先从零手写。整个程序的核心只有 4 个部分1. 应用主结构体typedef struct _app_t App; struct _app_t { Window *window; // 主窗口 TextView *text; // 多行文本框 uint32_t clicks; // 点击计数器 };NAppGUI 用App结构体统一管理应用状态窗口、控件指针都挂在这里方便在回调函数间共享。2. 事件回调按钮点击处理static void i_OnButton(App *app, Event *e) { textview_printf(app-text, Button click (%d)\n, app-clicks); app-clicks 1; unref(e); }每次点击按钮就在文本框中追加一行记录。Event是事件对象listener()宏负责把回调绑定到控件上——这种「控件 回调」模式是 NAppGUI 事件驱动的精髓。3. 构建界面面板static Panel *i_panel(App *app) { Panel *panel panel_create(); Layout *layout layout_create(1, 3); // 1 列 3 行的网格 Label *label label_create(); Button *button button_push(); TextView *text textview_create(); app-text text; label_text(label, Hello!, Im a label); button_text(button, Click Me!); button_OnClick(button, listener(app, i_OnButton, App)); layout_label(layout, label, 0, 0); layout_button(layout, button, 0, 1); layout_textview(layout, text, 0, 2); layout_hsize(layout, 0, 250); // 固定列宽 250px layout_vsize(layout, 2, 100); // 文本框高度 100px layout_margin(layout, 5); layout_vmargin(layout, 0, 5); layout_vmargin(layout, 1, 5); panel_layout(panel, layout); return panel; }注意这里没有手写任何坐标layout_create(1, 3)创建了一个「1 列 3 行」的网格三个控件依次放入第 0、1、2 行剩下的交给布局系统自动计算位置——这正是 NAppGUI 跨平台 UI 不跑偏的秘诀。4. 应用入口osmain 宏static App *i_create(void) { App *app heap_new0(App); Panel *panel i_panel(app); app-window window_create(ekWINDOW_STD); window_panel(app-window, panel); window_title(app-window, Hello, World!); window_origin(app-window, v2df(500, 200)); window_OnClose(app-window, listener(app, i_OnClose, App)); window_show(app-window); return app; } #include osapp/osmain.h osmain(i_create, i_destroy, , App)osmain()宏是跨平台入口的关键它自动生成各平台对应的main函数你只需提供创建函数和销毁函数NAppGUI 就会接管窗口消息循环、事件分发等底层工作。整个文件加注释不到 90 行一个完整的跨平台图形界面程序就诞生了完整的i_destroy销毁函数请查看 demo/hello/main.c 中的实现它负责释放窗口和堆内存。五、项目配置两行 CMake 搞定构建NAppGUI 提供了一组现成的 CMake 辅助宏创建项目只需一个配置文件nap_desktop_app(HelloWorld NRC_NONE) set_target_properties(HelloWorld PROPERTIES FOLDER demo)参考 demo/hello/CMakeLists.txt把HelloWorld替换成你的项目名即可。nap_desktop_app宏会自动帮你链接所需的全部 NAppGUI 库无需手工配置。六、编译运行Windows / macOS / Linux 三平台实测WindowsDeveloper Command Promptcmake -S . -B build cmake --build build --config Debug .\build\Debug\bin\HelloWorld.exemacOSTerminalcmake -G Xcode -S . -B build cmake --build build --config Debug ./build/Debug/bin/HelloWorld.app/Contents/MacOS/HelloWorldLinuxTerminalcmake -S . -B build -DCMAKE_BUILD_TYPEDebug cmake --build build -j 4 ./build/Debug/bin/HelloWorld 编译成功后你会看到一个带标题栏的原生窗口上方是标签文字中间是可点击的按钮下方是多行文本框。点击按钮文本框就会不断追加「Button click (n)」记录。七、进阶探索官方示例是最好的教科书跑通 Hello World 后强烈建议逐个运行 demo/ 目录下的官方示例它们覆盖了几乎所有常见场景示例学习重点demo/guihello/GUI 全家桶标签、按钮、下拉框、表格、标签页等 30 组件demo/bode/自绘图表 数学曲线展示 NAppGUI 绘图引擎demo/col2dhello/2D 物理碰撞检测的图形化演示demo/die/经典骰子小游戏事件驱动的绝佳范例demo/products/数据表格 菜单 工具栏的完整应用结构demo/htjson/HTTP 请求与 JSON 解析实战其中 demo/hello/main.c 是所有示例中结构最精简的入门起点而 demo/guihello/ 则是探索 NAppGUI 控件库的最佳地图。八、常见问题速查Q编译时报找不到nappgui.hA确保源码目录结构完整main.c与nappgui.h的相对路径正确并使用仓库自带的nap_desktop_app宏配置构建。QLinux 下界面显示异常A检查是否已安装libgtk-3-dev并确认 X11/Wayland 显示环境正常。Q如何打包发布给用户ANAppGUI 编译产物是静态链接的原生可执行文件直接分发对应平台的二进制即可无需用户安装任何运行时。从环境搭建到窗口显示全程不超过 10 分钟——这就是 NAppGUI 的承诺一份 C 代码三平台原生运行。现在就去 clone 源码动手写下你的第一个跨平台桌面应用吧【免费下载链接】nappgui_srcSDK for building cross-platform desktop apps in ANSI-C项目地址: https://gitcode.com/gh_mirrors/na/nappgui_src创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表