【问题标题】:c++ win32 create a text only buttonc++ win32创建一个纯文本按钮
【发布时间】:2011-10-24 01:28:23
【问题描述】:

我想在我的 c++ win32 应用程序中添加一个简单的文本按钮。我正在使用 CreateWindowEx 函数创建按钮,但无法找出正确的样式。我想显示一个纯文本按钮,并能够在用户单击它时接收消息。我想获得的样式与 Windows 7 系统音量控制中的文本按钮(其中显示“混音器”)相同。如果可能的话,我也想显示一个工具提示。

【问题讨论】:

    标签: c++ winapi button


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你需要让它只响应点击文本并进行热链接处理。
      【解决方案3】:

      实际上该按钮是一个所有者绘制按钮 - 它侦听鼠标移动消息,当您将鼠标悬停在它上面时,它会为文本添加下划线(syslink 控件没有此行为)。否则它是一个股票按钮。

      【讨论】:

      • 为什么选择所有者绘制按钮而不是 SysLink?大概您可以说服 SysLink 团队添加热跟踪支持?还是所有者绘制按钮有一些优势?也许是可访问性。
      • 一个优点是它可以让您立即解决您的问题,而不是向 SysLink 团队提交功能请求,然后看着他们将决定推迟数月,直到他们最终意识到他们毕竟没有时间去做,并用“对不起,我们没时间了”来回应请求,现在你已经创建了一个完全可以避免的紧急情况:现在你必须修复一个错误最后一分钟。
      • 谢谢雷蒙德,这正是我应该给出的答案。有问题的按钮大约有 150-200 行代码,其中绝大多数用于处理禁用主题的情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多