winapi – #define _UNICODE无法使用MinGW CodeBlocks

通常我使用视觉工作室,但我切换到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);

但是当我去编译时,我得到错误,它无法将Wchar_t转换为WNDCLASSEX上的CHAR *和类名称和窗口标题上的CreateWindowEx上的CHAR *.

如果我右键单击并转到createwindowex和WNDCLASSEX的声明,它会从winuser.h中得到这些:

typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;

#define CreateWindowEx CreateWindowExW

如果我注释掉定义_UNICODE它编译并且没有任何问题

在编译unicode应用程序时,您应该定义UNICODE和_UNICODE. Windows标头使用 UNICODE,MS C运行时使用 _UNICODE
相关文章
相关标签/搜索