使用整数原子

时间:2013-03-21 11:26:06

标签: windows winapi dde

String Atoms在DDE(动态数据交换)中很有用。 Integer Atoms有什么用?

2 个答案:

答案 0 :(得分:2)

使用整数和字符串原子类似,但整数原子没有引用计数,因此它们实际上从不存储在原子表中,而是直接映射到原子值。

String Atoms 示例:Windows类名(但也可以使用Integer Atom,请参阅Hans Passant的回答)

整数原子的示例:标准剪贴板格式

答案 1 :(得分:2)

我所知道的唯一用途是内置对话框类名的原子编号。 MessageBox和其他人使用#32770。您使用哪个来找回窗口。还有其他一些,我很高兴地忘记了他们的数量和用法。这可以追溯到20世纪80年代,即16位Windows和极端资源限制的时代。

您可以在this answer中看到使用此原子编号的示例代码。

    // 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