在Win32中,size member(cb)名称实际上是什么意思?

Ton*_*ion 5 c winapi

在相当多的Win32结构中,你必须将结构的大小赋予其中一个成员,在很多情况下,存储它的成员被调用cb或以此为前缀.

DISPLAY_DEVICE有一个cb大小的成员.

它也用于某些类型的消息的名称,例如CB_GETCURSEL.也许在这种情况下它适用于ComboBox.

在Win32的其他地方,cb首字母缩略词(我假设?)用作成员名称的一部分.

如WNDCLASS具有cbWndExtra和cbClsExtra.

在STARTUPINFO你拥有它:

typedef struct _STARTUPINFO {
  DWORD  cb;
  LPTSTR lpReserved;
  LPTSTR lpDesktop;
  LPTSTR lpTitle;
  DWORD  dwX;
  DWORD  dwY;
  DWORD  dwXSize;
  DWORD  dwYSize;
  DWORD  dwXCountChars;
  DWORD  dwYCountChars;
  DWORD  dwFillAttribute;
  DWORD  dwFlags;
  WORD   wShowWindow;
  WORD   cbReserved2;
  LPBYTE lpReserved2;
  HANDLE hStdInput;
  HANDLE hStdOutput;
  HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
Run Code Online (Sandbox Code Playgroud)

该文件说,这:

CB

结构的大小,以字节为单位.

我想知道是否有人知道什么cb代表或意味着什么?如果它确实有意义的话.

也许有人知道这个的历史,这可以解释它.

rod*_*igo 6

它可能代表计数字节.

例如,STARTUPINFO它应该由你初始化sizeof(STARTUPINFO).这样,Windows内部将知道您正在使用哪个版本的结构,因为它随着时间的推移而增长.

在其他情况下只是一些字节.

除了ComboBoxes,它代表Combo Box.

  • @Tony*尺寸*含糊不清.特别是当你处理字符串时.Windows API遵循惯例,通过使用`cb`(字节数)和`cch`(字符数)来消除歧义.这种惯例被一致地使用,它出现在消歧似乎是多余的地方. (2认同)