如何在 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查看器制作注释,如突出显示、删除线、下划线、绘制、添加文本等?