主题:求助关于UNICODE
reminder
[专家分:0] 发布于 2006-09-17 00:04:00
#include <windows.h>
#define _UNICODE
#define UNICODE
#include <tchar.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = "Hello!";
MessageBox (NULL, _TEXT (p), _TEXT ("HelloMsg"), //此处编译不通过
MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
编译时有一个错误:
error C2065: 'Lp' : undeclared identifier
请问:使用UNICODE不是这么用的吗?
回复列表 (共8个回复)
沙发
soso0574 [专家分:100] 发布于 2006-09-17 08:53:00
MessageBox(NULL,_TEXT(p),_TEXT("HelloMsg"),
MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
这句可以的,原来的错误是因为你输入了编译器未知的字符导致的
板凳
reminder [专家分:0] 发布于 2006-09-17 11:49:00
嗯。。这个我清楚,就因为#define UNICODE了,注释掉是可以的
那请问如何使用UNICODE呢?谢谢
3 楼
soso0574 [专家分:100] 发布于 2006-09-17 12:17:00
你说的是”如何使用UNICODE字符集“还是“如何设置程序使其为UNICODE字符集的程序”?
4 楼
mnzn2530 [专家分:0] 发布于 2006-10-04 02:24:00
#include <windows.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
wchar_t * p = L"Hello!";
MessageBoxW (NULL, p, L"HelloMsg", MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
直接显式使用UNICODE
5 楼
mnzn2530 [专家分:0] 发布于 2006-10-04 02:25:00
#include <windows.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
char * p = "Hello!";
MessageBoxA (NULL, p, "HelloMsg", MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
显式使用ASCII
6 楼
mnzn2530 [专家分:0] 发布于 2006-10-04 02:30:00
#include <windows.h>
#include <tchar.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = __T("Hello!"); //注意是2条下划线
MessageBox (NULL, p, __T("HelloMsg"), MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
这是用VC中的TCHAR.H的通用代码, 是否使用UNICODE取决于你是否定义了_UNICODE(下划线的意思是说明这个定义并不是标准,只是VC可以使用的)
7 楼
mnzn2530 [专家分:0] 发布于 2006-10-04 02:36:00
#include <windows.h>
#include <tchar.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = _T("Hello!"); //注意是一条下划线
MessageBox (NULL, p, _T("HelloMsg"), MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
TCHAR.H中的第二种宏
#include <windows.h>
#include <tchar.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = _TEXT("Hello!"); //注意是一条下划线
MessageBox (NULL, p, _TEXT("HelloMsg"), MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
这是第三种
8 楼
mnzn2530 [专家分:0] 发布于 2006-10-04 02:41:00
#include <windows.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = __TEXT("Hello!"); //注意是两条下划线
MessageBox (NULL, p, __TEXT("HelloMsg"), MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
标准下的TCHAR和__TEXT宏
#include <windows.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR szCmdLine, int iCmdShow)
{
TCHAR * p = __TEXT("Hello!");
MessageBox (NULL, p, TEXT("HelloMsg"), MB_OK | MB_DEFBUTTON2 | MB_ICONEXCLAMATION);
return 0 ;
}
标准下的TEXT宏
是否用UNICODE取决于是否定义了 UNICODE(没有下划线)
我来回复