→ purpose:可以理解用MFC、SDK寫視窗程式,為什麼會老是被罵了 09/26 00:37
這個問題和以下幾個 macro 的定義有關:
WINVER 代表最低平台需求
_WIN32_WINNT 代表最低的 Win NT 平台需求
_WIN32_WINDOWS 代表最低的 Win 9x 平台需求
_WIN32_IE 代表最低的 IE 需求
這些 macro 的數值可以參考:Using the WIndows Headers (Windows)
http://msdn.microsoft.com/en-us/library/aa383745%28VS.85%29.aspx
在 Visual C++ 2008 Express 當中,建立新專案而不勾選「空白專案」的話,
targetver.h 就有這些 macro 的定義。如果建立空白專案或者直接開啟 MSDN 所附上的
範例專案就要自行定義這些 macro ,並且確定在 compile 的時候它們出現在最前面。
以 rebar 的問題來說只要在一開始有下面三行程式碼就可以了:
#ifndef _WIN32_WINNT // 指定最低平台需求為 Windows NT 4.0。
#define _WIN32_WINNT 0x0400 // 將它變更為針對 Windows 其他版本的適當值。
#endif
以上是在 Visual C++ 的解決方法,而我在 MinGW + Eclipse + CDT 環境下的測試
發現需要定義的 macro 不一樣:
#ifndef _WIN32_IE // 指定最低平台需求為 Internet Explorer 4.0。
#define _WIN32_IE 0x0400 // 將它變更為針對 IE 其他版本的適當值。
#endif
最保險的方法就是讓四個 macro 都有定義。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.136.96.116