最近做個小程序要使用到SetComputerNameEx和GetComputerNameEx兩個函數,
下面是改函數在MSDN中的解釋
BOOL SetComputerNameEx(
COMPUTER_NAME_FORMAT NameType, // name type
LPCTSTR lpBuffer // new name buffer
);BOOL SetComputerNameEx(
COMPUTER_NAME_FORMAT NameType, // name type
LPCTSTR lpBuffer // new name buffer
);
特別是:
Requirements
Windows NT/2000 or later: Requires Windows 2000 or later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows 2000.
此外要使用該函數還要使用Platform SDK 2003要去微軟網站下。
本來以爲在要用到該函數的.CPP文件的開頭部分加上
#define _WIN32_WINNT 0x0501
#include <windows.h>
兩行就可以了,誰知道編譯來編譯去就是報:SetComputerNameEx未定義的錯,在網上找了半天
按照http://topic.csdn.net/t/20031109/01/2441881.html這篇帖子改的,人家實現了我怎麼報錯呢?
爲了找到問題的原應,我重新新建了一個Win32 Console Applicetion,在文件頭加上上述代碼,不報錯。
先來想去,應該是_WIN32_WINNT 0x0501的問題。回頭打開原來的工程,把
#define _WIN32_WINNT 0x0501剪切到stdafx.h的一開始部分,對了!
自己簡單分析下原因,應該是由於這句話的意思#define _WIN32_WINNT 0x0501就是要在程序編譯的時候說明
本程序實在XP下運行的,而編譯器最開始編譯的應該是stdafx.h,假如把#define _WIN32_WINNT 0x0501放在
其他cpp文件裏,那麼編譯器並不認這句話,所以就會報錯。:)這樣解釋還通啊!
各位高手多指教指教啊!
另外,補充做了如上工作後如果要是使用CFileDialog,那麼請在#include <afxwin.h>的後面添加下面這句:#undef _WIN32_WINNT。否則對話框打開後會報錯,有關詳細文章請參考:http://dev.csdn.net/article/07/07075.shtm