用C++ Win32创建一个纯文本按钮

3
我想在我的C++ Win32应用程序中添加一个简单的文本按钮。我使用CreateWindowEx函数创建按钮,但无法确定正确的样式。我想要显示一个仅文本按钮,并能够在用户单击它时接收消息。我想要获取的样式与Windows 7系统音量控制中的文本按钮相同(其中写着“Mixer”)。如果可能的话,我还想显示一个工具提示。
3个回答

5
那个混音控件看起来更像是一个超链接控件而不是一个按钮。如果你需要的话,我会选择SysLink控件。

3
您可以使用BS_OWNERDRAW样式创建一个“Button”类窗口,并处理WM_DRAWITEM消息。在您的WM_DRAWITEM消息处理程序中,您可以简单地显示文本。

你需要让它只响应文本的点击并进行热链接处理。 - David Heffernan

3

实际上,那个按钮是一个自绘制的按钮 - 它监听鼠标移动消息,当你将鼠标悬停在它上面时,它会给文本加下划线(系统链接控件没有这种行为)。否则它就是一个通用按钮。


你为什么选择自绘制按钮而不是SysLink?也许你可以说服SysLink团队添加热跟踪支持?还是自绘制按钮有一些优势?比如可访问性。 - David Heffernan
其中一个优点是,它让你能够立即解决问题,而不必向SysLink团队提出功能请求,然后观察他们将决定推迟数月,直到最终意识到他们根本没有时间去做,并回复请求说“抱歉,我们时间不够了”,现在你已经在自己的端口创建了一个完全可以避免的紧急情况:现在你必须在最后一分钟修复错误。 - Raymond Chen
谢谢Raymond,这正是我会给出的答案。所涉及的按钮大约有150-200行代码,其中绝大部分用于处理禁用主题的情况。 - Larry Osterman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接