快速开始

目标:从 0 到跑起第一个 StellarX 窗口,用最短路径验证环境没问题。
详细的使用教程请前往作者的个人博客,更多教程逐步完善中:点击跳转


如果你是完全零基础的同学,建议先完成学校/网上的 C++ 基础课程,再来尝试 GUI 开发。


如果在使用Git克隆仓库时出现:fatal: unable to access 'https://github.com/Ysm-04/StellarX.git/': Failed to connect to github.com port 443 after 21128 ms: Could not connect to server 或类似报错,可能是因为网络环境问题,请多尝试执行几次克隆命令。或者直接下载仓库ZIP

下文以「解压/克隆后的 StellarX 目录」记为 STELLARX_ROOT


创建工程

3.1.在 VS 中创建空项目

  • 打开 VS → 新建项目 → 选择「空项目」(Console / 空项目均可)
  • 项目类型选择 C++,设置好名称和路径

3.2.添加源文件倒工程

  • (如果你下载的是Release不用看这条)
  • 如果你使用的是源码,那么把所有的头文件和源文件
    添加到你的项目里即可,然后直接看第3.5条

3.3.配置包含目录与库目录

  • 在项目属性中:
    • C/C++ → 常规 → 「附加包含目录」中加入:
      STELLARX_ROOT\include(按你实际目录写)
    • 链接器 → 常规 → 「附加库目录」中加入:
      STELLARX_ROOT\lib
    • 如果项目属性里并没有发现C/C++,是因为你创建的是空项目,在源文件中创建一个.cpp文件即可

3.4.链接 StellarX 静态库

  • 链接器 → 输入 → 「附加依赖项」中加入例如:
    StellarX-vX.X.X-Release.lib\StellarX-vX.X.X-Debug.lib
    注意:按lib目录下的实际.lib文件名替换

3.5.新建源文件

  • 在工程中添加一个 main.cpp,用于写第一个窗口示例


代码示例

#include"StellarX.h"//包含头文件

int main()
{
	//创建一个窗口类的对象,参数为:宽度、高度、初始化模式、背景色、标题
	Window win(1300, 800, NULL, RGB(255, 255, 0), "欢迎使用Stellar 星垣-GUI");
	
	//绘制窗口(纯色背景版本)
	win.draw();

	//绘制窗口(背景图版本)参数为背景图文件路径
	//win.draw("image\\bk1.jpg");

	//进入事件循环
	//注意:runEventLoop 会阻塞当前线程直到窗口关闭
	//前面不能写死循环,否则会卡死导致无法响应事件
	return win.runEventLoop();
}
  • Window:负责创建 Win32 窗口并处理消息循环
  • draw():让窗口显示出来
  • runEventLoop():进入主循环,直到用户关闭窗口


继续在上面的基础上加一点点控件逻辑,让用户看到“可交互”的 GUI。

#include"StellarX.h"

int main()
{
	Window win(1300, 800, NULL, RGB(255, 255, 0), "StellarX 星垣");

	//创建按钮  参数:x坐标,y坐标,宽度,高度,文本 ,还有其他重载形式,可以查看API文档或源码
	auto btn = std::make_unique<Button>(100, 40, 100, 50, "点击我");

	//设置点击事件,注册回调函数
	btn->setOnClickListener([&win](){
		StellarX::MessageBox::showAsync(win, "欢迎使用StellarX\n作者:我在人间做废物", "欢迎"); });
	

	//添加按钮到窗口,注意使用std::move转移所有权,这时btn不再拥有该对象
	//如果需要后续操作,可以在添加前保存原始指针或引用
	win.addControl(std::move(btn));

	win.draw();
	return win.runEventLoop();
}
  • 按钮的参数含义:位置 (x, y)、宽度、高度、文本
  • setOnClick:按钮为默认模式或StellarX::ButtonMode::NORMAL模式注册点击回调,这里用 lambda 显示一个消息框
  • StellarX::MessageBox 框架自己的对话框工厂模式showAsync为非模态对话框
  • addControl:把控件添加到窗口/根容器中

这节的目的:证明控件正常绘制,事件可以响应。



一些常见的问题

  • 编译时报找不到头文件 / 库文件?
    → 检查 VS 属性里的「附加包含目录」和「附加库目录」是否配置正确。
  • 链接错误:无法解析的外部符号?
    → 检查是否在「附加依赖项」中添加了正确的 .lib,以及 Debug/Release 是否匹配。
  • 运行时窗口一闪而过?
    → 确认是否调用了 window.runEventLoop(),并且没有提前 return
  • 示例代码和实际 API 名称不一致?
    → 以当前版本的头文件/文档为准,本页示例仅用于说明流程。

如果遇到其他问题无法解决,可以联系作者或者在首页评论区反馈,作者会尽快解决



如果你已经成功跑起了示例窗口,可以继续查看:

  • API / 使用指南:了解 Window、Control、Canvas、Table 等模块的详细用法
  • 示例 Demo:参考完整的小工具与界面示例
  • 下载 & 更新日志:关注最新版本变化与下载方式