我可以覆盖C++/MFC项目中全局定义的API吗
Can I override a globally defined API in a C++/MFC project?
我需要确保只有当我的应用程序在交互式桌面上运行时才会显示消息框。所以我在想,我可以用自己的实现(来自C++/MFC项目,使用VS 2008编译)覆盖:MessageBox和AfxMessageBox吗?
PS。我不需要全局挂钩。这只需要从我的应用程序代码中运行。例如,如果代码中有::MessageBox(...);
,它应该允许我调用自己的方法,而不是链接到系统API。
默认的MessageBox(实际上是MessageBoxA或MessageBoxW)被定义为导出,因此不幸的是,您不能首先定义要链接的本地版本。如果您可以访问所有使用MessageBox的源,那么在包含windows.h之后重新定义MessageBox宏很简单:
#include <windows.h>
#undef MessageBox
#define MessageBox MyMessageBox
如果你有第三方二进制文件或其他不编译代码的东西,这当然不会起作用。
如果使用MFC,则可以覆盖CWinApp::DoMessageBox函数。
相关文章:
- 包括一个类来定义全局变量参数 c++ :(
- 在两个.cpp文件之间定义全局类/结构指针
- 为Qt项目树中的所有项目定义全局宏
- 如何定义全局函数指针并分配给特定地址
- 使用 c++ 中的特征库定义全局向量
- 用于定义全局函数"using namespace"
- 在主循环外部多个文件上定义全局变量
- 为什么允许重新定义全局运算符 new(size_t)?
- C 和 C++ 标头:在另一个结构内定义全局结构
- 为什么我不能在头文件中定义全局函数
- 在标头中定义全局数组的模板技巧
- 当在其中定义全局变量时,如何在.cpp中包含 C 样式的 .h
- 在 main() 中定义全局变量
- 我可以在 MFC 应用程序中定义全局变量的位置
- C++自定义全局新建/删除覆盖系统库
- 如何定义全局变量,以便所有类都可以访问/编辑它们
- C++:重新定义全局变量
- C++允许重新定义全局(常量)变量
- c++定义全局变量
- 如何在Arduino上的函数中定义全局数组的长度