#define _UNICODE 不适用于 MinGW +代码块
通常我使用 Visual Studio,但我切换到 mingw,我喜欢使我的应用程序可以轻松地从 unicode 和多字节更改,在我的 mingw 项目中,我有我的定义并包含如下内容:
#define WIN32_LEAN_AND_MEAN
#define WINVER 0x0700
#define _UNICODE
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#define WND_MAIN_CLASS _T("MainWindowFrame")
然后我注册并创建我的窗口,例如
WNDCLASSEX wc;
...
wc.lpszClassName = WND_MAIN_CLASS;
RegisterClassEx(&wc);
hwnd = CreateWindowEx(0, WND_MAIN_CLASS, _T("Main Window"),
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInst, NULL);
但是当我去编译我得到错误,它无法将 WNDCLASSEX lpszClassName 上的 wchar_t 转换为 CHAR* 以及类名和窗口标题上的 CreateWindowEx 。
如果我右键单击并转到 createwindowex 和 WNDCLASSEX 的声明,它会从 winuser.h 中显示这些内容:
typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
#define CreateWindowEx CreateWindowExW
如果我注释掉定义 _UNICODE,它会编译并正常工作
usually i use visual studio, but i switched to mingw, i like to make my apps easily changeable from unicode and multi byte, in my mingw project i have my defines and includes like this:
#define WIN32_LEAN_AND_MEAN
#define WINVER 0x0700
#define _UNICODE
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#define WND_MAIN_CLASS _T("MainWindowFrame")
then i register and create my window e.g.
WNDCLASSEX wc;
...
wc.lpszClassName = WND_MAIN_CLASS;
RegisterClassEx(&wc);
hwnd = CreateWindowEx(0, WND_MAIN_CLASS, _T("Main Window"),
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInst, NULL);
but when i go to compile i get errors that it cannot convert wchar_t to CHAR* on the WNDCLASSEX lpszClassName and the CreateWindowEx on the Class name and window title.
if i right click and go to declaration of createwindowex and WNDCLASSEX, it comes up with these from winuser.h:
typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
#define CreateWindowEx CreateWindowExW
if i comment out the define _UNICODE it compiles and works with no problems
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编译 unicode 应用程序时,您可能应该同时定义
UNICODE
和_UNICODE
。 Windows 标头使用 UNICODE 和 MS C 运行时使用 _UNICODEWhen compiling unicode apps you should probably define both
UNICODE
and_UNICODE
. The windows headers use UNICODE and the MS C runtime uses _UNICODE