VS2013 專案預設 字元集:Unicode(UNICODE, _UNICODE 定義),導致:
MessageBox 解析為 MessageBoxW,需寬字串 L"文字"。RegisterClassEx 結構體 lpszClassName 為 LPCWSTR。"Hello" 為 const char*,型別不匹配。_T() / TEXT() 宏(推薦,支援雙模式):
MessageBox(NULL, _T("Hello World!"), _T("MsgBox"), 0);
WNDCLASSEX wc = {0};
wc.lpszClassName = _T("MyWindowClass");
MessageBoxW(NULL, L"Hello", L"Title", 0),但需逐一修改所有 API 呼叫。#include <windows.h>
#include <tchar.h>
int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR lpCmd, int nShow) {
MessageBox(NULL, _T("Hello World!"), _T("MsgBox"), 0);
return 0;
}
// 第二個程式同理,所有字串常數包 _T(),入口點改 _tWinMain
_tWinMain 是 WinMain 的巨集,根據字元集對應 wWinMain 或 WinMain。TCHAR、LPTSTR、LPCTSTR 等類型配合 _T() 可自動適配 Unicode/MBCS。_T(),避免未來移植麻煩。