Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
7-60443
Bug
2003-04-16 10:22
2003.06.19
версия ОС.


14-60328
Ежик
2003-06-03 17:22
2003.06.19
Занялся я тут одним проектом....


3-60029
prihod
2003-05-27 15:52
2003.06.19
??? Как обновлять TDBGrid ???


8-60277
АлексКриппер
2003-02-27 09:31
2003.06.19
Как создать MIDI музыку


1-60219
BDRON
2003-06-05 14:48
2003.06.19
Кириллица в заголовке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский