#define _UNICODE не работает с MinGW + CodeBlocks

Обычно я использую 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);

но когда я иду к компиляции, я получаю ошибки, что он не может преобразовать wchar_t в CHAR* на WNDCLASSEX lpszClassName и CreateWindowEx на имя класса и заголовок окна.

если я щелкну правой кнопкой мыши и перейду к объявлению createwindowex и WNDCLASSEX, он получит их из winuser.h:

    typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;

#define CreateWindowEx CreateWindowExW

если я закомментирую определение _UNICODE, оно компилируется и работает без проблем

1 ответ

Решение

При компиляции приложений Unicode вы, вероятно, должны определить оба UNICODE а также _UNICODE, Заголовки Windows используют UNICODE, а среда выполнения MS C использует _UNICODE

Другие вопросы по тегам