MessageBoxW和MessageBoxA

baifanmvp 2009-01-12 06:31:38
小第原来一直用的是vc 6,它里面MessageBox默认的是MessageBoxA版本,最近用2005,它里面默认的是MessageBoxW版本,请问是不是在2005里的windows.h里多了
#define UNICODE ? 如果是的话,为什么用#undef UNICODE后还是不能调用到MessageBoxA?
谢谢回答!!
...全文
1383 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyisnail 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baifanmvp 的回复:]
引用 6 楼 oyljerry 的回复:
引用 4 楼 baifanmvp 的回复:
引用 1 楼 shuiyan 的回复:
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。

MessageBoxA直接调用这个肯定调的到,我就是不明白undef仅仅在UNICODE面前就失效了

你还要把工程属性的Debugging -》 Character set -> 改成multi byte

问题解决了,原来把配置…
[/Quote]

所以要通过配置属性来改
xiaoyisnail 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 baifanmvp 的帖子:]
小第原来一直用的是vc 6,它里面MessageBox默认的是MessageBoxA版本,最近用2005,它里面默认的是MessageBoxW版本,请问是不是在2005里的windows.h里多了
#define UNICODE ? 如果是的话,为什么用#undef UNICODE后还是不能调用到MessageBoxA?
谢谢回答!!
[/Quote]

是编译器编译时加的选项
flydream1980 2009-01-12
  • 打赏
  • 举报
回复
学习了
bitwwzhang130 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]
引用 4 楼 baifanmvp 的回复:

引用 1 楼 shuiyan 的回复:
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。

MessageBoxA直接调用这个肯定调的到,我就是不明白undef仅仅在UNICODE面前就失效了

你还要把工程属性的Debugging -》 Character set -> 改成multi byte
[/Quote]
学习了
baifanmvp 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]
引用 4 楼 baifanmvp 的回复:
引用 1 楼 shuiyan 的回复:
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。

MessageBoxA直接调用这个肯定调的到,我就是不明白undef仅仅在UNICODE面前就失效了

你还要把工程属性的Debugging -》 Character set -> 改成multi byte
[/Quote]
问题解决了,原来把配置属性改了就好了,谢谢了,但是还是有点不明白undef为什么没起到作用,难道是编译器把这句话屏敝了?
oyljerry 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baifanmvp 的回复:]
引用 1 楼 shuiyan 的回复:
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。

MessageBoxA直接调用这个肯定调的到,我就是不明白undef仅仅在UNICODE面前就失效了
[/Quote]
你还要把工程属性的Debugging -》 Character set -> 改成multi byte
baifanmvp 2009-01-12
  • 打赏
  • 举报
回复
msdn我没2005的。。。
baifanmvp 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shuiyan 的回复:]
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。
[/Quote]
MessageBoxA直接调用这个肯定调的到,我就是不明白undef仅仅在UNICODE面前就失效了
waizqfor 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 baifanmvp 的帖子:]
小第原来一直用的是vc 6,它里面MessageBox默认的是MessageBoxA版本,最近用2005,它里面默认的是MessageBoxW版本,请问是不是在2005里的windows.h里多了
#define UNICODE ? 如果是的话,为什么用#undef UNICODE后还是不能调用到MessageBoxA?
谢谢回答!!
[/Quote]
查查MSDN吧 里面有说明 找找2005版的
xbwee 2009-01-12
  • 打赏
  • 举报
回复
这是操作系统函数由
#define _UNICODE
#undef _UNICODE
控制
shuiyan 2009-01-12
  • 打赏
  • 举报
回复
印象中,有UNICODE宏的不止windows.h,这里只是明显的定义一次。在别的很多地方会再次判断并重定义的。
你不如试试在undef后,直接调用MessageBoxA。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧