2011-01-11 99 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