最近做个小程序要使用到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.youkuaiyun.com/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.youkuaiyun.com/article/07/07075.shtm