我们可以在MFC中挂接函数调用吗?

问题描述

我使用的是非常老的MFC应用程序,并且GUI的许多回调定义如下,这些回调分布在不同视图/文档的100多个cpp文件

ON_COMMAND(ID_FILE_OP1,OnFileOp1)

ON_UPDATE_COMMAND_UI(ID_FILE_OP1,OnUpdateFileOp1)

ON_COMMAND(ID_FILE_OP2,OnFileOp2)

ON_UPDATE_COMMAND_UI(ID_FILE_OP2,OnUpdateFileOp2)

一项新要求要求我在每个ON_UPDATE_COMMAND_UI定义的回调函数调用以及ON_COMMAND之后和之前调用一个函数

我正在尝试创建一个#define,以便将更改本地化并用作回叫开始结束的挂钩机制。

我绝对可以在每次函数调用之前和之后调用我的公共函数,但是我不认为这是一种干净的方法

什么是标准或好的方法

我希望从外部干净地连接到ON_COMMANDON_UPDATE_COMMAND_UI回调函数

我在Windows,Visual Studio 2015 x64上。

解决方法

您可以通过调用SetWindowsHookEx函数来安装钩子过程。要检索DLL模块的句柄,请使用... wParam,szMsg,c ++调用LoadLibrary函数。 if(FAILED(hResult)){// TODO:编写器错误...