Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 整数原子的使用_Windows_Winapi_Dde - Fatal编程技术网

Windows 整数原子的使用

Windows 整数原子的使用,windows,winapi,dde,Windows,Winapi,Dde,在DDE(动态数据交换)中非常有用。 使用整数和字符串原子有什么用?类似,但整数原子没有引用计数,因此它们实际上从未存储在原子表中,而是直接映射到原子值 字符串原子的示例:Windows类名(但它们也可能使用整数原子,请参见Hans Passant的答案) 整数原子的示例:标准剪贴板格式我所知道的唯一用途是内置对话框类名的原子数。MessageBox等使用#32770。这就是你用来找到窗户的地方。还有一些,我很高兴地忘记了它们的号码和用法。这要追溯到20世纪80年代,当时有16位窗口和极端的资源

在DDE(动态数据交换)中非常有用。
使用整数和字符串原子有什么用?

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

字符串原子的示例:Windows类名(但它们也可能使用整数原子,请参见Hans Passant的答案)


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

我所知道的唯一用途是内置对话框类名的原子数。MessageBox等使用#32770。这就是你用来找到窗户的地方。还有一些,我很高兴地忘记了它们的号码和用法。这要追溯到20世纪80年代,当时有16位窗口和极端的资源限制

您可以在中看到使用此原子数的示例代码


那道考题多大了?没有人再使用DDE了。我使用GlobalAddAtom()和RegisterHotKey()。其中我使用字符串Atom。Integer atom仅用于向后兼容或其他用途?@Martin James:String atom不仅在DDE中使用。在MSDN中,“应用程序可以将字符串放在atom表中,而不是将字符串复制到每个结构中…”因此Integer atom只需节省几块内存。w0w
    // 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