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

Вниз

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

 
sosv   (2003-04-17 14:06) [0]

Как (по какому правилу) Windows присваивает хэндлы окнам?


 
DVM ©   (2003-04-17 14:13) [1]

от балды


 
sosv   (2003-04-17 14:14) [2]

Похоже на то
:)


 
Игорь Шевченко ©   (2003-04-17 14:47) [3]

Строго по порядку, начиная с единицы. Но хендлы присваиваются всем объектам user (меню, окна и еще много разных видов объектов) в порядке их создания.


 
i-C3H7OH ©   (2003-04-17 14:52) [4]

наверное это индекс в какой-то внутренней таблице


 
DVM ©   (2003-04-17 14:53) [5]

А после того, как объект перестал существовать, его номер хэндла ведь тоже может быть использован? Тогда уже не по порядку.


 
Игорь Шевченко ©   (2003-04-17 15:07) [6]

i-C3H7OH © (17.04.03 14:52)


> наверное это индекс в какой-то внутренней таблице


Разумеется. Таблица находится в ядре и отображается через mapped-file для любого процесса, использующего user32.dll. В этой таблице хранятся адреса всех объектов user системы (19 разновидностей), младшее слово handle - это индекс в таблице, старшее - хэш-код (дополнительная страховка для исключения пересечения с хэндлами 16-битных программ (в них используется только младшее слово, так как размер handle для них - 16 бит)).


 
Игорь Шевченко ©   (2003-04-17 15:16) [7]

В дополнение: То, что я написал, относится к NT-системам (Win NT, Win 2k, Win XP). Как происходит работа с окнами и иными объектами user в Win9x я не знаю :)


 
C3H5(OH)3   (2003-04-18 11:54) [8]

Игорь Шевченко © (17.04.03 15:07)

вау! откуда знаешь? а таблица обьектов ГДИ по тому же принципу?


 
Игорь Шевченко ©   (2003-04-18 12:23) [9]

C3H5(OH)3 (18.04.03 11:54)


> а таблица обьектов ГДИ по тому же принципу?


Да, только максимально количество объектов GDI - 16384 штуки, в отличие от объектов USER, которых может быть 65536 штук.


 
Внук ©   (2003-04-19 14:51) [10]

>>Игорь Шевченко © (18.04.03 12:23)
Если верить Феню, после 12000 происходит исчерпание лимита. Это про GDI-объекты. Правда, сам не проверял :)


 
MBo ©   (2003-04-19 18:31) [11]

>Внук
исчерпание лимита на один процесс - чтобы остальные хоть как-то выкручивались


 
i-C3H7OH ©   (2003-04-20 00:52) [12]

>>Если верить Феню, после 12000 происходит исчерпание лимита. Это про GDI-объекты. Правда, сам не проверял :)


я проверял на ВинХР. там как повезет стабильный результат где-то 9950, часто больше 14000, а перья вообще 1 раз создались 62000 штук.
делал так:

var h:THandle; n:integer

n:=0;
while true do
begin
h := CreatePen(PS_SOLID, 1); //GetDC, CreateCompatibleDC
if h = 0 then break;
inc(n);
//сохраняем h в массиве, чтоб потом удалить культурно
end;
.


 
Внук ©   (2003-04-21 08:58) [13]

>>MBo © (19.04.03 18:31)
Понял :)


 
joisy ©   (2003-04-21 12:25) [14]

A razve v WinXP ogranicheniye na kolichestvo "okon" ne otodvinuto?



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
11-60100
Alexander
2002-09-12 16:32
2003.06.19
Если у программы активно модальное окно, то при активизации тем


3-60042
YuraKiller
2003-05-25 15:38
2003.06.19
Как подбить количество возращаемых записей?


14-60318
Soft
2003-06-02 20:54
2003.06.19
Linux: истоки новой философии программирования


14-60384
Дмитрий К.К.
2003-06-03 05:41
2003.06.19
Именинники 3 июня


6-60307
Jaguar
2003-04-08 14:32
2003.06.19
Proxy-сервер, FTP-протокол