c++ - 捕获鼠标在 Win32 游戏中的文本框上的点击

标签 c++ winapi

使用 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/

相关文章:

java - c++ std::vector<byte> 到 UTF16 编码的字符串

c++ - c++中派生类的初始化

windows - 跨进程边界的 CRT 类型

c# - 无法解释的 OverflowException 将表示屏幕坐标的 IntPtr 转换为 Int32

c++ - Buit Rectangles(我自己的类型),不会随窗口调整大小?

c++ - 在文件 C++ 中分组数据

c++ - vector .push_back

c++ - SecByteBlock 到字符串转换错误

c++ - 如何使用WIN32 API for C++更改文本的颜色和大小?

c++ - 如何从可执行文件的多重/双重代码签名中检索信息