类似项目中的MessageBox行为

MessageBox behavior in similar projects

本文关键字:MessageBox 行为 项目      更新时间:2023-10-16

我有两个多字节字符集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。

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

 'MessageBoxA' : function does not take 1 arguments 

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

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

CWnd派生内部,MessageBox转到CWnd::MessageBox

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