关于MessageBox可以说是最简单的API函数

以下测试数据于VS2008进行

第一个:MessageBox(hwnd, "hello world", "", MB_OK);

这是在一般的视频教程的示例程序,但是我们编译时,编译器会报错:

“MessageBoxW”: 不能将参数 2 从“const char [6]”转换为“LPCWSTR”

错误原因找到:原来是MessageBox的第二三参数为:LPCWSTR,那么什么是LPCWSTR呢,LPCWSTR就是WCHAR *,也就是说宽字符。。。。所以不能通过简单的字符串就行了,,但是在VC6.0貌似得行,但是为了安全起见,我们还是不要用这一种方法。

那么怎么办呢?

于是,我想到了强制转换MessageBox(hwnd,(LPCWSTR)"hello world",(LPCWSTR)"",MB_OK);运行,成功!!但是,我们发现里面是乱码,所以我们不能通过简单的转换就能实现。

MS提供了一种方法就是TEXT宏:MessageBox(hwnd,TEXT("hello world"), TEXT(""), MB_OK);现在终于成功了,我们通过编译器的转到定义发现:#define EXT(quote) L##quote      // r_winnt

所以也可以写成MessageBox(hwnd, L"hello world", L"", MB_OK);当然,这是一种简便方法。

第二个:

有了上面的经验,于是我们继续:

char str[80];

sprintf(str, "hello %s", "world");

MessageBox(NULL, TEXT(str), TEXT(""), MB_OK);

但是我们运行,会发现Lstr未定义,这个很容易理解,因为TEXT是简单的宏替换,所以会出现该问题。。。。

那么,遇到这样的问题我们怎样解决呢?

因为MessageBox的参数是宽字符指针,那么我们就定义成WCHAR型吧!!!这样连TEXT都不用要了!!!!

WCHAR str[80];

sprintf(str, "hello %s", "world");

MessageBox(NULL, str, TEXT(""), MB_OK);

我们再次运行,但是仍然有错

那是因为sprintf的第一参数是char *型的,所以。。。。

有问题,那么也就一定有解决的方法,,,

wsprintf就是针对宽字符型的

WCHAR str[80];

wsprintf(str, TEXT("hello %s", L"world");

MessageBox(NULL, str, TEXT(""), 0);

至此,所有问题解决

MessageBox的几点用法相关推荐

  1. 实用ExtJS教程100例-002:MessageBox的三种用法

    在上一节中,我们用到了MessageBox,在本文中,我们将介绍一下ExtJS中常用的三种MessageBox. Ext.MessageBox.alert() 这个方法用来打开一个普通的对话框,对话框 ...

  2. MessageBox.Show()的各种用法

    [函数] <整型> MessageBox(<字符串> Text, <字符串> Title, <整型> nType,MessageBoxIcon); [函 ...

  3. MFC之MessageBox、AfxMessageBox用法

    在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox ...

  4. C# Timer用法及实例详解

    1.C# Timer用法及实例详解 http://developer.51cto.com/art/200909/149829.htm http://www.cnblogs.com/OpenCoder/ ...

  5. WP8.1 Study4:WP8.1中控件集合应用

    1.AutoSuggestBox的应用 在xaml里代码可如下: <AutoSuggestBox Name="autobox" Header="suggestion ...

  6. 前端笔记html+css+vue, 页面布局、定位、字体背景等和一些常用方法

    目录 弹性布局: 定位: overflow溢出: 表单: vue数据存取: vuex store 全局数据: vux弹窗,软提示,硬提示 ElementUI MessageBox 弹框简单用法 背景设 ...

  7. python判断数字奇偶_python如果快速判断数字奇数偶数

    python如果快速判断数字奇数偶数 这篇文章主要介绍了python如果快速判断数字奇数偶数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用 按 ...

  8. 【读书笔记】《Windows游戏编程之从零开始》(一)

    Windows编程入门 HelloVisualStudio这个项目介绍了,Windows程序的"心脏"--WinMain函数,以及MessageBox函数的详细用法. FirstB ...

  9. C# DataTable相关操作

    DataTable相关操作 用法一:动态创建一个DataTable ,并为其添加数据 public void CreateTable(){//创建表DataTable dt = new DataTab ...

最新文章

  1. 查看服务器Smart Array卡
  2. python什么时候进入中国-python诞生于什么时候
  3. 使用Docker部署Node.js中的Vue项目
  4. ID,ClientID,UniqueID的区别
  5. linux c之通过管道父子进程实现同步通信
  6. [剑指offer]面试题19:二叉树的镜像
  7. λ演算的语法和语义_λ和副作用
  8. android程序到处apk,导出已安装到手机中程序的apk文件
  9. VC++ COleSafeArray VARIANT的使用
  10. B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
  11. 多说评论系统API调用和本地身份说明(JWT)
  12. Windows Hello 摄像头人脸识别解锁 DELL拆机摄像头方案
  13. App的暗黑颜色搭配
  14. 天坑专业成功跨考计算机,研0渣渣前来报到
  15. ffmpeg m3u8 与 mp4 相互转换
  16. Android UI 之实现多级列表TreeView
  17. 插装式比例插装阀比例节流阀比例顺序阀放大器
  18. python编程方块_趣味Python编程之经典俄罗斯方块
  19. 投稿论文图片分辨率达不到要求的解决方案
  20. 5c标准第二语言,美国语言教学5C标准对中文作为第二语言教学课堂的启示

热门文章

  1. linux服务器校对和手动修改时间
  2. FlexRay AUTOSAR网络管理(AUTOSARFRNM)简介
  3. 会议论文扩展摘要写作指南 conference extended abstract
  4. win10如何修改锁屏(欢迎界面)的用户名
  5. 开发基础 练习2总结
  6. 博士在读,在家无法科研的你,在忙些什么?
  7. 【51单片机】定时器产生指定延迟的delay函数
  8. PyCharm打包可执行文件方法
  9. EEPROM存储芯片24C02
  10. PCA主成分分析法浅理解