问问题
544 次
2 回答
2
使用整数和字符串原子类似,但整数原子没有引用计数,因此它们实际上从未存储在原子表中,而是直接映射到原子值。
字符串原子示例:Windows 类名(但它们也可能使用整数原子,请参阅 Hans Passant 的回答)
整数原子示例:标准剪贴板格式
于 2013-03-21T12:17:59.273 回答
2
我知道的唯一用途是内置对话框类名称的原子数。MessageBox 等使用#32770。这就是你用来找到窗口的东西。还有一些其他的,我很高兴忘记了它们的编号和用法。这可以追溯到 1980 年代,即 16 位 Windows 和极端资源限制的时代。
您可以在此答案中看到使用此原子数的示例代码。
// Checks if <hWnd> is a dialog
StringBuilder sb = new StringBuilder(260);
GetClassName(hWnd, sb, sb.Capacity);
if (sb.ToString() != "#32770") return true;
[编辑]
添加了一些整数原子类:
#ifndef POPUPMENU_CLASS_NAME
#define POPUPMENU_CLASS_NAME "#32768" /* PopupMenu */
#endif
#ifndef DESKTOP_CLASS_NAME
#define DESKTOP_CLASS_NAME "#32769" /* Desktop */
#endif
#ifndef DIALOG_CLASS_NAME
#define DIALOG_CLASS_NAME "#32770" /* Dialog */
#endif
#ifndef WINSWITCH_CLASS_NAME
#define WINSWITCH_CLASS_NAME "#32771" /* WinSwitch */
#endif
#ifndef ICONTITLE_CLASS_NAME
#define ICONTITLE_CLASS_NAME "#32772" /* IconTitle */
#endif
于 2013-03-21T12:37:36.463 回答