2014-11-03 63 views
1

我有两个多字节字符集MFC项目 - AB。在他们两个我已经放置MessageBox("hello");代码行。类似项目中的MessageBox行为

项目A很高兴 - 编译和运行没有问题。这很奇怪。如果我按F12导航到它的定义,它将转到WinUser.h#define MessageBox MessageBoxA。功能MessageBoxA需要4个参数。如果我做跟踪我我要查个WINCORE.CPP线

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

最后两个参数是空的。

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

'MessageBoxA' : function does not take 1 arguments 

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

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

回答

2

CWnd衍生产品中,MessageBox转到CWnd::MessageBox

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