MessageBox的几点用法
关于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的几点用法相关推荐
- 实用ExtJS教程100例-002:MessageBox的三种用法
在上一节中,我们用到了MessageBox,在本文中,我们将介绍一下ExtJS中常用的三种MessageBox. Ext.MessageBox.alert() 这个方法用来打开一个普通的对话框,对话框 ...
- MessageBox.Show()的各种用法
[函数] <整型> MessageBox(<字符串> Text, <字符串> Title, <整型> nType,MessageBoxIcon); [函 ...
- MFC之MessageBox、AfxMessageBox用法
在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三各方法: 1.调用API中的MessageBox ...
- C# Timer用法及实例详解
1.C# Timer用法及实例详解 http://developer.51cto.com/art/200909/149829.htm http://www.cnblogs.com/OpenCoder/ ...
- WP8.1 Study4:WP8.1中控件集合应用
1.AutoSuggestBox的应用 在xaml里代码可如下: <AutoSuggestBox Name="autobox" Header="suggestion ...
- 前端笔记html+css+vue, 页面布局、定位、字体背景等和一些常用方法
目录 弹性布局: 定位: overflow溢出: 表单: vue数据存取: vuex store 全局数据: vux弹窗,软提示,硬提示 ElementUI MessageBox 弹框简单用法 背景设 ...
- python判断数字奇偶_python如果快速判断数字奇数偶数
python如果快速判断数字奇数偶数 这篇文章主要介绍了python如果快速判断数字奇数偶数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用 按 ...
- 【读书笔记】《Windows游戏编程之从零开始》(一)
Windows编程入门 HelloVisualStudio这个项目介绍了,Windows程序的"心脏"--WinMain函数,以及MessageBox函数的详细用法. FirstB ...
- C# DataTable相关操作
DataTable相关操作 用法一:动态创建一个DataTable ,并为其添加数据 public void CreateTable(){//创建表DataTable dt = new DataTab ...
最新文章
- 查看服务器Smart Array卡
- python什么时候进入中国-python诞生于什么时候
- 使用Docker部署Node.js中的Vue项目
- ID,ClientID,UniqueID的区别
- linux c之通过管道父子进程实现同步通信
- [剑指offer]面试题19:二叉树的镜像
- λ演算的语法和语义_λ和副作用
- android程序到处apk,导出已安装到手机中程序的apk文件
- VC++ COleSafeArray VARIANT的使用
- B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
- 多说评论系统API调用和本地身份说明(JWT)
- Windows Hello 摄像头人脸识别解锁 DELL拆机摄像头方案
- App的暗黑颜色搭配
- 天坑专业成功跨考计算机,研0渣渣前来报到
- ffmpeg m3u8 与 mp4 相互转换
- Android UI 之实现多级列表TreeView
- 插装式比例插装阀比例节流阀比例顺序阀放大器
- python编程方块_趣味Python编程之经典俄罗斯方块
- 投稿论文图片分辨率达不到要求的解决方案
- 5c标准第二语言,美国语言教学5C标准对中文作为第二语言教学课堂的启示