类似项目中的MessageBox行为

时间:2014-11-03 18:13:24

标签: c++ visual-c++ mfc

我有两个多字节字符集MFC项目 - AB。在这两个代码中,我都放置了MessageBox("hello");代码行。

项目A很高兴 - 编译和运行没有问题。这很奇怪。如果我按F12导航到其定义,则会转到WinUser.h#define MessageBox MessageBoxA。函数MessageBoxA有4个参数。如果我确实追踪到了,我就会进入wincore.cpp行

int CWnd::MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption, UINT nType)

最后两个参数是NULL' s。

项目B编译器只报告错误而不编译。

 'MessageBoxA' : function does not take 1 arguments 

如何理解为什么项目A编译没有问题?我想这是链接技巧,但是如何管理这样的事情呢?

Show includes显示没有任何信息,因为wincore.cpp不是标题。

1 个答案:

答案 0 :(得分:2)

CWnd推导内部,MessageBox转到CWnd::MessageBox

但是如果你在其他类中,那不会继承CWnd。你调用全局MessageBox,它有一个参数,你应该给窗口句柄(或null)作为第一个参数。