通常我使用视觉工作室,但我切换到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它编译并且没有问题