【发布时间】:2014-04-24 20:44:06
【问题描述】:
我正在尝试使用 GetComputerName() 来检索框的名称。该代码在 Windows 7 上运行良好,但是,当我在 windows xp 上测试时,代码不起作用(结果未知)。知道为什么吗?
int GetBoxName(BoxInfo &box_info)
{
int Ret;
DWORD dwLen;
const char* szUnk = "UNKNOWN\0";
// Get the size of the box name then allocate memory.
Ret = GetComputerName(NULL, &dwLen);
box_info.BoxName = new char[dwLen];
// Attempt to retrieve the box name.
if((Ret = GetComputerName(box_info.BoxName, &dwLen) == 0))
{
delete[] box_info.BoxName;
box_info.BoxName = new char[strlen(szUnk)];
box_info.BoxName = (char*)szUnk;
return 1;
}
return 0;
}
【问题讨论】:
-
尝试调用 GetLastError?
-
如果你使用
wsprintf,你可能不应该使用char? -
@Mats:
wsprintfA是 Win32 API 函数的 ASCII 版本。也许您将它与 C 宽字符串函数swprintf混淆了? -
可能。无法理解 MS 库中的任何函数名称,对吗?
-
@Mats:实际上,它比 CRT 更规律。 ASCII 与 Unicode 总是由
A或W后缀表示,没有任何后缀的名称被转发到基于UNICODE宏的实际函数之一。
标签: c++ winapi windows-xp