问题标签 [message-map]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - ATL/WTL 替代消息映射 (ALT_MSG_MAPs) 如何工作?我什么时候使用它们?
ATL 支持使用
ALT_MSG_MAP
宏声明的备用消息映射。
每个备用消息映射由一个唯一编号标识,您将其传递给ALT_MSG_MAP
.
使用备用消息映射,您可以在一个映射中处理多个窗口的消息。
请注意,默认情况下,CWindowImpl
不使用备用消息映射。
要添加此支持,请覆盖WindowProc
您的CWindowImpl
派生类中的方法并ProcessWindowMessage
使用消息映射标识符进行调用。
当我查看 WTL 时,我会看到如下消息映射:
但是,我不明白:
他们是如何被调用的。(代码如何知道备用消息映射的存在?)
它们与默认消息映射有何不同。他们看起来都在为同一个窗口处理相同类型的消息......
为什么它们有用。(难道他们不都是同一个窗口吗?)
有人对备用消息映射的作用有更好的解释吗?
(为什么发明它们的动机会非常有帮助。)
c++ - 如何将值传递给 MFC 消息映射函数 on_command
我有一个函数,它根据接收到的 std::string 值执行特定操作。
例如:
无效 performTaskOnStringValue(std::string);
现在我有一组功能区按钮 (CMFCRibbonButton),需要通过在按钮单击时将它们各自的文本作为值传递来调用此函数。
我已将这些按钮的 ID 映射到带有按钮 ID 的消息映射宏 on_command。所有按钮共享一个共同的 id - 例如 -
ID_RIBBON_BUTTON_ID
消息映射如下
ON_COMMAND(ID_RIBBON_BUTTON_ID, &MyClass::performTaskOnStringValue);
如何将按钮文本作为参数传递给 ButtonClick 上的此函数?
mfc - 捕获和重定向 ON_UPDATE_COMMAND_UI 消息
我在(父)中有CMDIChildWnd
一个(子)。也有发送到它的子视图的工具栏。到目前为止有效。现在,只要激活(例如单击它),消息就会到达,而不是父。CReportView
CFormView
CMDIChildWnd
ON_UPDATE_COMMAND_UI
CReportView
ON_UPDATE_COMMAND_UI
CReportView
CFormView
我现在要做的是ON_UPDATE_COMMAND_UI
在子视图中捕获消息并以某种方式将它们中继到父视图。我尝试覆盖该CWnd::PreTranslateMessage()
方法并调用父视图的SendMessage()
方法,但ON_UPDATE_COMMAND_UI
没有到达那里。
我还尝试了以下
但这也没有用。有人有想法吗?
c++ - MFC从父级捕获控件的子级消息而不为子级创建类处理程序?
我有一个名为CDialogParent的向导创建的 CDialog ,然后创建一个子对话框模板IDD= IDD_CHILD_DLG1,在这个子对话框中我放了一个按钮IDC_BTN1(我不为这个孩子创建类处理程序)。
通常,我需要为子级创建新的类处理程序CDialogChild并添加消息映射,例如:
我想通过在 CDialogParent 中声明消息映射来捕获子对话框的控件消息 IDC_BTN1 的问题,例如:
如何在不创建新的类处理程序的情况下做到这一点?感谢帮助!
c++ - MFC - 每当更改属性时如何执行某个方法
几天前,我开始开发一个 MFC 应用程序,它作为我的数据库的客户端。最近,我试图在“属性”窗口上实现一个每次更改属性值(最好是作为组合框的字段)时执行的方法。我的第一次尝试是覆盖CMFCPropertyGridProperty::OnUpdateValue()
. 我能够正确地“实现”这个方法,但它没有按预期工作(我相信这里的主要问题是我没有直接在 CProperties 类上实现它,但我在互联网)。
所以,我已经转向基于消息映射的命令。我尝试了多种命令,例如ON_CONTROL_REFLECT
, CBN_EDITCHANGE
, CBN_EDITUPDATE
,但这些似乎都没有帮助。我不确定我是否在定义主要属性(这些 previos 命令的第一个参数)时犯了一个巨大的错误,或者它们是否是CCombobox
该类的专有命令。换句话说,这些命令似乎对我当前的属性网格毫无用处,因为到目前为止我使用的唯一“组合框”是使用方法 CMFCPropertyGridProperty::AddOption() 时生成的组合框(重要说明:我的整个属性网格基本上由 CMFCPropertyGridProperty 对象组成)。
无论如何,我相信我的疑问的答案和这个问题的解决方案有点简单,但我仍然是 C++ 和 MFC 的新手......
c++ - c++ MFC和处理windows消息
Windows 消息的消息映射中需要什么代码?
调用函数的代码:
功能:
visual-c++ - 在单击取消按钮时关闭对话框,忽略 EN_KILLFOCUS
我的对话框中有一个 CEdit 字段EN_KILLFOCUS
,因此当用户输入无效数据时,当焦点从该字段移开并且焦点返回 CEdit 字段时,会显示一条警告消息,以便用户可以输入正确的数据。如果用户输入无效数据并单击取消按钮,则还会显示一条警告消息,这是不希望的,因为用户无论如何都试图取消他的操作。当用户单击 CANCEL 按钮时,我尝试实现 PostQuitMessage,但这会关闭整个应用程序。当用户单击 CANCEL 按钮时,我只希望我的对话框关闭。单击取消按钮后,有什么方法可以立即关闭对话框。这是我尝试过的代码。
visual-c++ - 是否存在接受返回 void 的函数的 ON_COMMAND_EX 版本?
我搜索但没有找到。我想要一个将菜单项命令操作链接到接受数字 ID 并且根本不提供任何返回(无效)的函数的消息映射宏。
ON_COMMAND
返回 void,但它太有限了,因为它不提供菜单项 ID,在这种情况下我需要它。
ON_COMMAND_EX
返回 a BOOL
,因此它迫使我进行大量返回,如果返回类型为 void,则不需要这样做。
那么,正如我在第一段中描述的那样,是否有这样的宏?
events - 即使添加了 ON_COMMAND 处理程序,菜单项仍保持禁用状态
我使用 Visual Studio 2013 制作了一个简单的拆分窗口应用程序。有两个视图,一个视图由 default-view-class 组成,另一个视图由派生自CScrollView
.
这个分离器工作正常。
当我尝试将ON_COMMAND
处理程序添加到菜单项之一时,就会出现问题。如果我将ON_COMMAND
处理程序放在默认视图类中,则没有问题。菜单项点击良好,处理程序有效。
但是,如果我将ON_COMMAND
处理程序放在自定义视图类中,则菜单项根本不会启用。
我相信我已经尽一切努力在我的自定义视图类中正确实现消息映射。
MyCustomView.h中DECLARE_MESSAGE_MAP()
肯定存在 , 当然,我已经在 MyCustomView.cpp 文件中添加了BEGIN_MESSAGE_MAP
,END_MESSAGE_MAP()
对。
但是,菜单项根本不会启用。它只是保持灰色。
我已经尽我所能在谷歌上搜索,但到目前为止似乎没有人有过这种经历。首先是否不可能将ON_COMMAND
处理程序添加到自定义视图类?我希望不是。
请给我一些建议。谢谢你。
python - 如何从 Protobuf MessageMap (Python) 中提取信息
我有一个 MessageMap 对象(在 Python 中),我无法终生弄清楚如何正确提取我需要的信息:
消息映射对象:
是我所拥有的。
非常感谢任何帮助。