我正在使用基於Qt 4.7.0(32位)的Qt Creator 2.0.1。操作系統是Windows 7旗艦版(32位)。爲什麼Windows 7機器上Qt Creator中的_WIN32_WINNT == 0x400?
我想使用下面的函數調用來重新啓動Windows:
ExitWindowsEx(EWX_REBOOT, SHTDN_REASON_MAJOR_SYSTEM |
SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY);
我添加WINDOWS.H和reason.h的源代碼,並在*的LIBS部分添加libuser32的.pro文件。
編譯完代碼後,Qt Creator發出錯誤,說明SHTDN_REASON_MAJOR_SYSTEM
和SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY
未在範圍中定義。
我查看了mingw附帶的reason.h文件。我發現#define
s爲一個#if
內:
#if (_WIN32_WINNT >= 0x0501)
我看着的出現_WIN32_WINNT
值設定爲1024(0x400的)。
我知道這代表某種版本號,那些#define
應該在特定版本後編譯。但是爲什麼_WIN32_WINNT
在Windows 7上如此之低?我如何使用這些#define
?我不想把直接的價值,而不是SHTDN_REASON_MAJOR_SYSTEM
和SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY
。
0x0501的意思是XP,它在mingw,因爲有兩個插件與資源管理器。但是WINNT通常被定義爲4(Windows 2000),因爲很多代碼只是用它來區分成長窗口(w2k)和嬰兒窗口(win95/98)。你可以只取出測試,如果你喜歡或定義WINNT到501 – 2011-03-26 06:07:13
@馬丁貝克特Win2000的不是4.4是NT 4 Win2000的是5.0和XP是5.1(像你說的)。但這與蒂姆的觀點有點相似。 – Fredrik 2011-03-26 06:18:05
是的,4的winver是寶寶窗戶! – 2011-03-26 07:57:41