2013-03-31 6 views
-4

Отфильтруйте числа от 0 до 0xFFFFFFFF от IsWindow (N)! = 0, сортировать и посмотреть -Перечисление окон через IsWindow

http://files.rsdn.ru/42164/iswindow_raw.png

- что числа 1) N, 2) и (N, 0xFFFF), 3) или (N, N 0xFFFF0000) - может служить в качестве HWND из то же окно.

Следовательно, вопрос: можно ли хранить 2 hwnd в 1 слове, а если нет - укажите конкретный контрпример. Благодарю.

+2

См. [Как определяются управляющие окна в Windows NT?] (Http://ppe.blogs.msdn.com/b/oldnewthing/archive/2007/07/17/3903614.aspx). – GSerg

+1

Также см. [Как обрабатываются управляющие окна менеджера в 16-битных Windows и Windows 95?] (Http://ppe.blogs.msdn.com/b/oldnewthing/archive/2007/07/16/3885472.aspx), [Почему ядро ​​HANDLEs всегда кратно четырем?] (Http://blogs.msdn.com/b/oldnewthing/archive/2005/01/21/358109.aspx), [Какое возможное использование этих лишних бит в ядре ручки? Часть 1: Sentinels] (http://blogs.msdn.com/b/oldnewthing/archive/2008/08/27/8898863.aspx), [Какое возможное использование этих дополнительных бит в обработках ядра? Часть 2: Преодоление ограниченной выразительности] (http://blogs.msdn.com/b/oldnewthing/archive/2008/08/28/8902173.aspx) – GSerg

+0

В чем именно вопрос? –

ответ

3

Это является возможно хранить HWND всего за 16 бит. Фактически, вы можете даже хранить его в 15 бит, так как это всегда равно.

Но вместо этого вы должны спросить: мудро ли это сделать? Ответ нет! В документации для API Win32 указано, что HWND представляет собой 32-разрядное целое число, но ничего не говорит о его внутренней структуре. Это недокументированные детали реализации, которые могут быть изменены в любой версии системы.

Любая техника, использующая эти знания, будет нахмуриться любым ответственным программистом. Это не значит, что это не может быть полезно, просто чтобы вы были осторожны с тем, что знаете.

Смежные вопросы