#define _UNICODE无法使用MinGW + CodeBlocks

时间:2011-01-11 18:37:38

标签: winapi 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它编译并且没有问题

1 个答案:

答案 0 :(得分:9)

编译unicode应用时,您应该定义UNICODE_UNICODE。 Windows标头使用UNICODE,MS C运行时使用_UNICODE