如何在 MFC C++ 中为文本添加下划线

Posted

技术标签:

【中文标题】如何在 MFC C++ 中为文本添加下划线【英文标题】:How to underline text in MFC C++ 【发布时间】:2013-12-11 14:21:17 【问题描述】:

我是 C++ 新手,如果这个问题太笼统,请原谅我..... 我正在使用 VS2010 在 C++ 中创建一个简单的 MFC 文本编辑器。目前,我正在尝试启动并运行以下基本功能:一个工具栏,它有一个下划线按钮,当您单击它时,该按钮会为所选文本加下划线。

我已经在互联网上搜索了解决方案,但只提出了以下建议:

http://aclacl.brinkster.net/MFC/ch12e.htm

但是,要么这段代码不完整,要么我无法弄清楚它们如何将实际按钮链接到命令处理程序(或者他们调用的执行实际下划线的代码)。

有人可以吗:

a) 明确下划线按钮在 StyleBar.cpp 中的位置

b) 如果存在更好的解决方案,请指出我的方向。

非常感谢。

【问题讨论】:

看起来下划线是在该代码示例中的 MyWordView 中处理的,而不是 StyleBar。 下划线按钮附加到ID ID_CHAR_UNDERLINE,它可能在资源文件的某处,并在CView派生类CMyWordView中处理。上面的例子看起来是你正在寻找的一个好的开始。祝你好运 它在“样式栏”部分下的文章中说“例如,单击粗体按钮会激活 CMyWordView::OnCharBold”。快速浏览CMyWordView 的代码会发现一个非常相似的方法,称为OnCharUnderline() user1158692 - 事实上,我确实记得当我在文章中读到它时想过这一点......但我无法理解的是点击粗体按钮是如何激活 CMyWordView:: OnCharBold .....代码中按钮和方法之间的链接到底在哪里?例如,不会有某种事件监听方法将 underline_button 链接到 CMyWordView::OnCharUnderline 吗?就此而言,下划线按钮实际定义在哪里?? Max - 你是说为了在 GUI 按钮“下划线”和命令处理程序 CMyWordView::OnCharUnderline 之间建立链接,您只需要: 【参考方案1】:

BEGIN_MESSAGE_MAP...END_MESSAGE_MAP 块中是消息队列映射到处理程序的地方。具体来说,ON_COMMAND(ID_CHAR_UNDERLINE, OnCharUnderline) 行将下划线控件标识符的WM_COMMAND 映射到处理设置选择样式的方法OnCharUnderline。您引用的页面不包含资源文件。工具栏本身似乎是在文章的前一页上构建的。

【讨论】:

Windows 命令消息。这就是 MFC 覆盖下的应用程序消息队列中发生的事情。 当您单击其中一个按钮时,带有该按钮标识符的 WM_COMMAND 将被放入消息队列中。消息从队列中弹出并由应用程序处理。 MFC 对应用程序开发人员隐藏队列,并提供宏(MESSAGE_MAP)用于将消息绑定到类方法。 如果我对您的理解正确.....您所指的 WM_COMMAND 是 ON_COMMAND(ID_CHAR_UNDERLINE, OnCharUnderline)? 没错。事实上,如果您查看 ON_COMMAND 宏是如何定义的,您会看到它在此处被引用(以及其他一些隐藏的复杂性)。 Nitpick:消息映射到 instance 方法,而不是 class 方法。

以上是关于如何在 MFC C++ 中为文本添加下划线的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中为pdf查看器制作注释,如突出显示、删除线、下划线、绘制、添加文本等?

如何在Android中为按钮的文本加下划线?

如何在 JTextPane 中为文本和下划线设置不同的颜色?

如何在 Flutter 中为 Text 的下划线设置动画?

如何在 CListCtrl 中为单个项目加下划线

如何在颤动中为标签栏下划线添加渐变?