0

我现在正在做一个编辑器,我需要在 BGI 上做一个可点击的按钮(它必须在上面)。

现在我做了类似 using outtextxy,给出了坐标然后我做了一个ifusing 获得的坐标mousexmousey如果它等于来自 的坐标outtext,它就完成了它的工作。

它对我来说仍然不够好,我想创建一个函数,当我使用 时outtext,它会同时创建if我所做的条件(手动if为每个条件设置outtext一个巨大的编码工作)。

有人可以通过向我展示如何执行此功能来帮助我吗?

4

1 回答 1

0

BGI 从来没有被设计成一个窗口/小部件管理器——它是一个低级的原始库。为了做你想做的事,你需要在上面实现一种 WM 形式。

对于简单的添加按钮,您只需要一个封装按钮位置的按钮类、绘制按钮的代码、确定 (x,y) 坐标是否位于按钮内的代码、按钮绘制状态(悬停、按下、正常) ,以及一个点击事件。

然后,在您的主循环中,您将需要遍历所有按钮以查看鼠标 (x,y) 是否位于按钮内。如果鼠标事件是单击,则调用按钮的单击事件。

对于您在应用程序中拥有的任何其他小部件类型也是如此,例如文本/编辑窗口。这就是所有窗口/小部件管理器的工作方式。

在应用程序中实现这一点的方式完全取决于您。我推荐一个简单的std::vector<BGIWidget>(或任何你命名的小部件超类)。然后你需要做的就是遍历你的小部件列表来处理绘图、鼠标悬停/进入/离开/单击事件等。

于 2017-11-13T02:43:59.847 回答