在我控制外部设备的基于对话框的UI中,我有一堆类似的外观和行为“旋钮”:由滑块,数字编辑框<组成的三重控件/ strong>,以及该数字编辑框的微调器。
值的变化会导致到该外部设备的往返,所以我自然而然地试图在每次“更改”时只调用那个冗长的API。这些变化可以来自3个控制中的任何一个,显然它们必须是同步的。这在实践中意味着如果编辑框改变 - 它需要改变滑块的位置。反之亦然。
API调用在单独的函数中实现,只要UI框架报告值发生更改,就会调用这些函数。
的问题:
bool m_processingUserInput;
)看起来,坦率地说,感觉非常难看我的问题是:我在这里错过了一个人们用来编写这种UI交互的完善模式吗?请让我知道一种优雅高效的方法。
答案 0 :(得分:1)
更改的第一个控件应触发“值更新”事件。其他控件应该订阅该事件并重新绘制其OnUpdate方法中的可视元素。您可以在Windows API之上构建它,或者使用MFC的内置文档视图架构,它基本上是模型 - 视图 - 控制器模式的实现:
https://www.codeproject.com/Articles/30291/An-Introduction-to-a-Model-View-Controller-Impleme