MessageBox没有解析为MessageBoxW?

时间:2011-01-31 19:50:44

标签: winapi api

情景1 我创建了一个空的vc ++项目,为它添加了一个c文件和#include。现在在我的main()函数中,如果我将鼠标悬停在MessageBox函数上,它将解析为MessageBoxA。

情景2 我现在在这里创建一个win32 windows项目,MessageBox解析为MessageBoxW ??? 我检查了项目属性 - > c / c ++ - >预处理器属性,我发现 WIN32 已定义,所以我在之前的项目中做到了但仍然是相同的结果。

我该怎么办。当然我可以使用后一种类型的项目,但我认为我是一个想要学习tid-bits的顽固新秀。

感谢。

4 个答案:

答案 0 :(得分:3)

这取决于UNICODE条件的存在与否,该条件由项目配置决定:Unicode或多字节字符集。

答案 1 :(得分:3)

新空项目的默认“字符集”属性为“多字节”,这意味着预处理器不会定义UNICODE预处理器符号,因此MessageBox将替换为MessageBoxA {1}}。

对于Win32项目,默认的“字符集”属性为“Unicode”,这意味着预处理器定义UNICODE,因此MessageBox将替换为MessageBoxW {1}}。

有关简介,请参阅MSDN文章Working with Strings

答案 2 :(得分:1)

项目+属性,配置属性,常规。它是字符集属性。在确定所有的工作方式后,才创建空项目。虽然最快的学习方法是犯下所有错误。

答案 3 :(得分:1)

一般建议:始终使用MessageBoxW()。使用MBCS设置编译程序的理由很少,字面意思是“文本损坏”。