我有两个多字节字符集MFC项目 - A
和B
。在这两个代码中,我都放置了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不是标题。
答案 0 :(得分:2)
从CWnd
推导内部,MessageBox
转到CWnd::MessageBox
。
但是如果你在其他类中,那不会继承CWnd
。你调用全局MessageBox
,它有一个参数,你应该给窗口句柄(或null)作为第一个参数。