VC++ 中 messageBox 的问题

来源:百度知道 编辑:UC知道 时间:2024/08/21 02:58:26
// blj.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "fstream"
#include "iostream"
#include "windows.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
st:
char *z[255];
char wenz[255];
DeleteFile(_T("c:\\blj.txt"));
cout<<"请输入一段 255 个字符的语句..."<<endl;
ofstream a("c:\\blj.txt",ios::out);
ifstream b("c:\\blj.txt",ios::in);
cin>>wenz;
cout<<"写在 C:\\blj.txt 中,内容为 :"<<wenz<<endl;
a.write(wenz,255);
a.close();
cout<<"这是读出来的内容...在 C: 中的文件是空的,因为被我删了,读了出来才删的..."<<endl;
b.read(z,255);
b.close();
cout<<z<<endl;
MessageBox(GetForegroundWindow(),z,NULL,48);
goto st;
return 0;
}

MessageBox 中第二个参数怎样从 char 转为 LPCWSTR ?

你声明的z是字符串指针,而MessageBox支持的是字符指针。

形如:
char z[100];
MessageBox( hWnd,z,z,MB_OK );
这样是支持的,

而你的是char* z[...];

LPWSTR 吧?


int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar );
转换 char 到 wide-character LPWSTR

char *z;
// 这里要给 z 分配单元, 假定 长度 len;
(略)
// 再开双字节wText,长度要比 z 长:
wchar_t *wText = new wchar_t[len+1];
// 清空:
memset(wText,0,len);
// 转换
::MultiByteToWideChar( CP_ACP, NULL,z, -1, wText,len );
// 用wText
MessageBox(...,wText,...);
// 用毕,删去
delete []wText;
------------------------------------

MessageBox 参数2用双字节吗?我印象用单字节 LPCSTR。
LPCSTR 就是 字符串的首地址。

_T(char*)