
Windows程序设计:MessageBox到底是函数还是宏定义?【附图】 20
以下是我编写的一段程序,编程环境是MSVC++6.0,装有VisualAssist,当我查看MessageBox的定义时,找到下面的内容,从这里看MessageBox是宏...
以下是我编写的一段程序,编程环境是MS VC++6.0,装有Visual Assist,
当我查看MessageBox的定义时,找到下面的内容,从这里看MessageBox是宏定义,
但在程序代码中 VA显示的颜色是棕色(棕色表是函数,粉色表示宏定义),
这表示MessageBox是一个函数,于是我自己又模仿MessageBox的定义自定义了MyMessageBox,结果
VA显示为粉色,说明VA认为我定义了宏MyMessageBox。
另外很多书本和网上资料都使用“MessageBox函数”这样的表述。
所以我的问题是MessageBox到底是函数还是宏定义呢?
/*<WINUSER.H>中MessageBox的定义*/
#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif // !UNICODE
/*程序源代码:MyMessageBox.C*/
#define MYUNICODE#define UNICODE
#ifdef MYUNICODE#define MyMessageBox MessageBoxW#else#define MyMessageBox MessageBoxA#endif // !MYUNICODE
#include <windows.h>#include <locale.h>#include <TCHAR.H>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ TCHAR * tc = TEXT("Hello!"); MessageBox(NULL,tc,TEXT("tc内容"),MB_OK); MyMessageBox(NULL,tc,TEXT("tc内容"),MB_OK);} 展开
当我查看MessageBox的定义时,找到下面的内容,从这里看MessageBox是宏定义,
但在程序代码中 VA显示的颜色是棕色(棕色表是函数,粉色表示宏定义),
这表示MessageBox是一个函数,于是我自己又模仿MessageBox的定义自定义了MyMessageBox,结果
VA显示为粉色,说明VA认为我定义了宏MyMessageBox。
另外很多书本和网上资料都使用“MessageBox函数”这样的表述。
所以我的问题是MessageBox到底是函数还是宏定义呢?
/*<WINUSER.H>中MessageBox的定义*/
#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif // !UNICODE
/*程序源代码:MyMessageBox.C*/
#define MYUNICODE#define UNICODE
#ifdef MYUNICODE#define MyMessageBox MessageBoxW#else#define MyMessageBox MessageBoxA#endif // !MYUNICODE
#include <windows.h>#include <locale.h>#include <TCHAR.H>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ TCHAR * tc = TEXT("Hello!"); MessageBox(NULL,tc,TEXT("tc内容"),MB_OK); MyMessageBox(NULL,tc,TEXT("tc内容"),MB_OK);} 展开
展开全部
是宏定义
MessageBox 在Unicode模式下调用MessageBoxW 在ANSI 模式下调用MessageBoxA
Windows 中有关需要处理字串的API,或者结构, 大部分都是按照这种方式进行声明的, 有两个函数/结构的的声明。 函数或结构名称尾部为A的表示采用Ansi字符集, 为W的表示采用Unicode字符集。
MessageBox 在Unicode模式下调用MessageBoxW 在ANSI 模式下调用MessageBoxA
Windows 中有关需要处理字串的API,或者结构, 大部分都是按照这种方式进行声明的, 有两个函数/结构的的声明。 函数或结构名称尾部为A的表示采用Ansi字符集, 为W的表示采用Unicode字符集。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询