转载 vs2008之MessageBox函数的用法 pb messagebox用法

原文地址:vs2008之MessageBox函数的用法作者:silovence

MessageBox这个函数可以在VC里面显示一个标准对话框,是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框。

函数原型及参数
int MessageBox(HWND hWnd, LPCTSTRlpText, LPCTSTR lpCaption, UINT, uType);
参数含义:
HWND hWnd ——父窗口的句柄。(在使用的时候发现在CView类里面不要填这一项,但是如果是再其他的类中,就要填写)
LPCTSTR lpText —— 对话框的内容
LPCTSTR lpCaption —— 对话框的标题
UINT uType ——对话框类型常量(窗口的风格)

该函数的返回值为整数,用于对话框按钮的识别。

对于Messagebox("hello");,它在vc6.0中运行是没有问题的,但在vs2005里编译却遇到了以下的错误:

d:my documentsvisual studio2005projectsmfcccmfcdlg.cpp(48) : error C2664:'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char[6]' to 'LPCTSTR'
原因是这样的:在VS2005中默认的类型是Unicode,而"hello"是ASCII,而非Unicode,因此会出错。

解决方式:Messagebox(_T("hello"));或者Messagebox(TEXT("hello"));或MessageBox(L"hello");

注:_T("hello")在宽字符集的工程里等于L"hello";_T("hello")在ASCII的工程里等于"hello"。

在宽字符集的工程里,表达的意思一样,在ascii的工程里,不同。
_T("hello, world")在宽字符集的工程里等于L"hello, world"
_T("hello, world")在ascii的工程里等于"hello, world"
是通过条件编译实现的。
#ifdef unicode
#define _T(x) Lx

因为你的程序在UNICODE(宽字节)字符集下运行,如果调用了 MessageBox,实际上调用的是 MessageBoxW 函数; 如果你的程序在 ANSI 字符集运行,调用 MessageBox ,就相当于调用MessageBoxA; 其中 MessageBoxW 支持 UNICODE; MessageBoxA支持ANSI;

UNICODE与ANSI 有什么区别呢?简单的说,UNICODE版的字符比ANSI的内存占用大,比如:
Win32程式中出现的标准定义 char 占一个字节,而 char 的UNICODE版被定义成这样:typedef unsignedshort wchar_t ;占2个字节。

所以有字符做参数的函数相应也用两个版本了。

宽字节版函数中带有字符参数的都应该用宽字节版的字符参数,将字符串转换成宽字节很容易:
[转载]vs2008之MessageBox函数的用法 pb messagebox用法
比如将 "Application Error"转换成UNICODE版,只需在它前面使用一个定义了的宏,如下:
L"Application Error" ,或者TEXT("Application Error")都可以

所以你应将 MessageBox(NULL,Temp,"ApplicationError",MB_ICONSTOP);

改为:MessageBox(NULL,Temp,L"Application Error",MB_ICONSTOP);

文章摘自:http://hi.baidu.com/ȫ����/blog/calendar/201005

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/300261.html

更多阅读

EXCEL表中LEFT和RIGHT函数的用法 left和right函数

在用EXCEL表中的时候,懂得一些常用的函数,会给你的工作带来很大便利。就像上次偶然的机会,听同事说道LEFT和RIGHT函数的用法,还挺有用的。像导出的财务数据,日期的格式都是2010-01-01,但是如果你只需要年月,不需要日期,你可以插入另外一列,适用

SetTimer函数的用法 c settimer用法

SetTimer函数的用法VS2008Ontimer函数在CDialogBar类中不能响应解决方案:如果是手工加的wm_timer消息,那就要检查一下BEGIN_MESSAGE_MAP(...Dlg, CDialog),END_MESSAGE_MAP()ON_WM_TIMER()宏之间有没有ON_WM_TIMER()了,没有的要添

EXCEL电子表格常用函数的用法--转载 excel表格常用函数

在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种数据都有它特定的格式和输入方法,为了使用户对输入数据有一个明确的认识,有必要来介绍一下在Exc

Excel统计函数COUNTIF的用法及实例 vb随机函数用法和实例

[转自]★笨笨☆ http://blog.sina.com.cn/pengjichang一:首先介绍COUNTIF函数的用法英文通用格式是:COUNTIF(range,criteria)中文通用格式是:COUNTIF(数据区域,条件表达式)1、返加包含值12的单元格数量=COUNTIF(range,12)2、返回包含负值的

声明:《转载 vs2008之MessageBox函数的用法 pb messagebox用法》为网友罪貪婪分享!如侵犯到您的合法权益请联系我们删除