Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.10;
Скачать: CL | DM;

Вниз

Atom   Найти похожие ветки 

 
X-RayMan   (2003-05-10 22:01) [0]

Народ, объясните, plz, что такое Atom. Зачем надо GlobalAddAtom и т.д. И почему, когда таблица атомов забита, нельзя запустить ни одно приложение (где-то я такое читал).


 
Ihor Osov'yak ©   (2003-05-11 14:32) [1]

Атом - целочисленный индекс, который однозначно идентифицирует
строку символов в так называемой таблице атомов.
Таблица атомов хранит не более одной копии данной строки. Если строка уже присутствует, то возвращается значение индекса существующего атома и увеличивает счетчик ссылок на соотв. строку на единицу. Можно сказать, что система предоставляет механизм для гарантированного отсутствия дубликатов строк в памяти и быстрого доступа к ним по индексу. Как это использовать - дело программиста. Например, я это дело использовал для маркировки окон (хук на активацию окна, мне нужно было знать получаю я это окно впервые в руки или уже имел). Еще пример - можно использовать для отметки того факта, что программа уже когда-то запускалась с момента перезагрузки системы - через регистрацию глобального атома (см. GlobalAddAtom и GlobalFindAtom..)

Зы. Ходят слухи, что DDE также использует механизм атомов. Также вполне возможно что этот механизм используется системой при запуске приложений - это по поводу "нельзя запустить". Но это предположения - я не изучал этого вопроса..


 
Polevi ©   (2003-05-11 19:02) [2]

эти слухи в хелпе ходят

The most typical use for atoms is in DDE applications. In the DDE protocol, applications use global atoms to identify the applications exchanging data, the nature of the data being exchanged, and the actual data items being exchanged. For more information about DDE and for examples that show how to use atoms, see Dynamic Data Exchange.


 
Ihor Osov'yak ©   (2003-05-11 19:37) [3]

да , еще ... Вспомнил - при создании наследника TWinConrol работа с атомами используется для "привязки" инстанции класса к соотв. окошку - см. function InitWndProc, procedure TWinControl.CreateWnd; в controls.pas
..

Так что если "таблицу переполнить", то делфийское с GUI точно уж не запустится :-)


 
X-RayMan   (2003-05-11 22:10) [4]

Сенкс! :)


 
Игорь Шевченко ©   (2003-05-12 10:23) [5]

И для полноты: атомы используются для регистрации оконных классов. Так что если таблица переполнится, то запустить что-либо вряд ли будет возможно.



Страницы: 1 вся ветка

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
1-31211
A_ndrew
2003-06-28 20:38
2003.07.10
TaskBar((


3-31146
sergey32
2003-06-18 14:57
2003.07.10
Ошибка при открытии запроса через ADODataSet


14-31412
Marser
2003-06-23 00:25
2003.07.10
Работа студента (в летний период и вообще)


14-31507
MakNik
2003-06-25 09:56
2003.07.10
UnInstall


1-31288
Disa
2003-06-26 14:30
2003.07.10
Поддержка таблиц