使用 C++,我正在使用 Win32 API 制作井字游戏。为了标记一个正方形(X 或 O),我希望玩家单击该正方形,然后它会变为 X 或 O。
我现在正在做的是将静态文本框变为 X 或 O 的按钮单击事件。但是,当我将按钮放在文本框顶部并使其不可见时,我无法单击它。
我真正需要的是一个仍然有效的隐形按钮。所以它没有设置 WS_VISIBLE
,但是你仍然可以点击它。
这是可能的还是有其他方法可以解决这个问题?
最佳答案
我可以在这里看到一些合理的可能性。
第一个也是最明显的是完全跳过使用按钮,只让底层窗口处理 WM_LBUTTONDOWN
消息,并在正确的位置设置“X”或“O”。为此,您甚至不需要静态控件——您可以直接在父窗口上检测鼠标点击,并在相应的方 block 中绘制“X”或“O”。
另一种可能性是标记为“可见”但碰巧是透明的按钮。 IMO,这是一个相当糟糕的选择。为此,您需要自己创建一个透明按钮控件,或者创建一个按钮控件的子类以禁用其绘制。
至少在 IMO 中,显而易见的方法是完全跳过使用静态控件。相反,只需直接使用按钮——按钮通常有一个标题。以该标题作为空字符串开头。单击该按钮后,根据需要将其标题更改为“X”或“O”。它可能还应该禁用自身以响应按钮单击,因此再次单击它不会产生任何进一步的影响。
关于c++ - 捕获鼠标在 Win32 游戏中的文本框上的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051633/