Шаг 148 - Что такое атомы (Atoms)

Атом как таковой это число (16 bit Integer). Это число соответствует строке. Набор атомов собирается в таблицу (atom table). Система обеспечивает несколько таблиц атомов для разных задач. По типу доступа их два типа:

Среди глобальны таблиц есть системные, которые недоступны непосредственно из приложений, но они используются косвенно через функции Win32 API. Например, вызывая функцию RegisterClass мы добавляет системный атом. Подробнее "Шаг 39 - RegisterClass()". Давайте напишем программу, которая будет скидывать содержание атомов в текстовый файл. Но учите то, что атомы могут быть в формате как обычной строки, так и строки в виде числа, например:

#123

Я буду выбирать только строки. Итак, программа.

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
#include "fstream.h"

void main()
{
	ofstream ofs("test.txt");
	int newatom=GlobalAddAtom("Hello Atom");
	for (int x=0;x<100000;x++)
	{
		char buffer[255];
		UINT a=GlobalGetAtomName(x,(char*)&buffer,sizeof(buffer));
		if (a!=0) 
		{
			if (buffer[0]!='#') ofs << buffer << endl;
		}
	}
	ofs.close(); 
}

Очень хорошо. Смотрим что там у нас в файле. А там много чего. Вот, например наш атом там.

......
inThreadWndName
erver Window
Hello Atom
CAddressEditBox_This
annelWnd
CAddressBand_This
......

А вот вообще чудо - Delphi!.

......
Open Message Window
bcheckMonitor
DelphiFFFB2A81
ControlOfs00400000FFFB21C9
MAINICON
WndProcPtr00400000FFFB21C9
......

И чего оно там делает интересно.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 14.11.2001