在Borland Graphic Interface上手动编程可点击按钮

时间:2017-11-13 02:07:56

标签: c++ function button clickable winbgi

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

现在我做了一些事情,比如使用outtextxy,给出坐标然后我使用ifmousex得到的坐标mousey,如果它等于来自outtext的坐标,它完成了它的工作。

对我来说仍然不够好,我想创建一个函数,当我使用outtext时,它会同时创建我所做的if条件(手动放置{每个if的{​​1}}条件是一个大规模的编码工作。)

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

1 个答案:

答案 0 :(得分:0)

BGI从未被设计为窗口/窗口小部件管理器 - 它是一个低级原始库。为了做你想做的事,你需要在顶层实现一种形式的WM。

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

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

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

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