函数的size参数

时间:2014-01-14 20:10:53

标签: c++ windows visual-c++ widestring widechar

我看到很多函数需要你设置输出字符串的大小。

GetComputerNameW 需要:

WCHAR wStrName[16U];
DWORD uSize = 16U;
GetComputerNameW(wStrName, &uSize);

RegSetValueExW 需要:

WCHAR wStrExec[1024U];
RegSetValueExW(..., (wcslen(wStrExec) + 1U) * sizeof(WCHAR));

GetWindowTextW 需要:

WCHAR wStrText[1024U];
GetWindowsTextW(..., sizeof(wStrText));

GetModuleBaseNameW 需要:

WCHAR wStrName[1024U];
GetModuleBaseNameW(..., sizeof(wStrName) / sizeof(WCHAR));

我的问题是,如何设置尺寸之间的区别?字符串始终定义为WCHAR,并且设置的大小差别很大。

1 个答案:

答案 0 :(得分:0)

如果你仔细read the documentation,你会看到size参数是输出缓冲区的大小,通常是字节:

cbData [in]
  

lpData参数指向的信息大小   字节。如果数据类型为REG_SZ,REG_EXPAND_SZ或REG_MULTI_SZ,   cbData必须包含终止空字符的大小或   字符。

当然,您需要产生以下内容:

WCHAR wStrExec[1024U];
RegSetValueExW(..., sizeof (wStrExec));