2013-02-20 27 views
0

我需要確保僅當我的應用程序在交互式桌面中運行時才顯示消息框。所以我想,我可以重寫:: MessageBox和AfxMessageBox與我自己的實現(從一個C + +/MFC項目,用VS 2008編譯)?我可以覆蓋C++/MFC項目中全局定義的API嗎?

PS。我不需要全局鉤子。這隻需要從我的應用程序的代碼工作。例如,如果代碼中的某個地方有::MessageBox(...);,它應該讓我調用我自己的方法,而不是鏈接到系統API。

回答

1

默認的MessageBox(實際上MessageBoxA或MessageBoxW)被定義爲一個出口,所以很遺憾你不能只定義一個本地版本先鏈接英寸如果你有機會到使用MessageBox的所有源很簡單,包括WINDOWS.H後雖然重新定義的MessageBox宏:

#include <windows.h> 
#undef MessageBox 
#define MessageBox MyMessageBox 

如果你有第三方的二進制文件或東西,你不編譯代碼此止跌當然不行。

+0

他可以在運行時使用trampolines覆蓋MessageBox函數。 – sashoalm 2013-02-21 14:22:39

+0

是的,絕對。謝謝。 – ahmd0 2013-02-21 17:36:33

相關問題