2011-01-11 97 views
4

通常我使用Visual Studio的工作,但我切换到MinGW的,我喜欢让我的应用程序中轻松从Unicode和多字节多变,在我MinGW的项目,我有我的定义,包括像这样的:的#define _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") 

然后我注册并创建我的窗口eg

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它编译,并没有任何问题的作品

+3

与WINVER什么?我不知道有一个Windows版本7 – 2011-01-11 19:02:28

+0

笑,我认为这意味着Windows 7的,很好哦.. ATLEAST一切都应该现在包括它的高...什么是Windows 7的WINVER?我thoguht远景是为0x0600和XP在0x0500 – Kaije 2011-01-11 20:26:17

回答

9

当编译Unicode的应用你应该同时定义UNICODE_UNICODE。该窗口标题中使用UNICODE和MS C运行时使用_UNICODE