Что такое окно?

Тема в разделе "WASM.WIN32", создана пользователем Miller Rabin, 20 окт 2007.

  1. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    Как ни странно нигде не могу найти информацию о том что же из себя на самом деле представляет объект окна??
    Какую роль играет хэндл окна? На индекс в таблице как-то смахивает слабо уж слишком в большом диапазоне варьируется.
    Зачем окну нужен гребаный класс с его гребаным именем?

    Какова связь между GUI-потоком и относящимися к нему окнами. Всмысле кто на кого ссылается и каким макаром.

    Буду признателен за любую информацию так собранная информация поможет в написании хорошей статьи
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Любой HANDLE в Win32 API это просто адрес структуры. Может есть исключения, но их немного.
     
  3. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Смотри структуру tagWnd
    Ты ошибся - хэндл окна как раз и есть индекс + служебные биты. Для более подробной инфы смотри неэкспортируемую из юзер.длл функцию ValidateHwnd.

    Если бы ты, прежде чем задавать вопрос, порылся в сорцах винды или, хотя бы, глянул на юзерную длл под идой, то половина вопросов бы отпала. На страничке http://twister.orgfree.com/other возьми файл ntuser.rar...

    AsmGuru62
    Как раз-таки не один хэндл не является адресом структуры. Адрес структуры это указатель.
     
  4. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Не правда - Например HMODULE - как раз адрес.
     
  5. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    530
    Адрес:
    Russia
    класс можно зарегить до показа окна из ресурсов, где в скрипте ресурсов диалога будет прописан именно этот класс - таким образом можно назначить свои свойства окну, которые нельзя задать в скрипте ресурса.
    к тому же класс необходим для помещения контролов в окне, ведь различные контролы - это тоже окна (SysTabControl32, SysListView32, ToolbarWindow32, msctls_statusbar32 etc).

    HMODULE - это адрес модуля в памяти. т.е. адрес, по которому загружен модуль.
    речь идёт о хэндлах окон. так что можешь рассматривать HMODULE как указатель на структуру MZ/PE файла, но данный пример всё равно не уместен.
     
  6. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Twister
    Интересно... а вот так HWND объявлен:
    Код (Text):
    1. typedef HWND__* HWND;
    Надо полагать Микрософт путает всех, чтоб не лазили по адресам.
     
  7. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Без обид: методом подаяния можно наскрести лишь на гребаную статью, хорошая предполагает куда больше личных усилий.
     
  8. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    Twister
    Спасибо за информацию на твоем сайте нашел все необходимое
     
  9. hwegh

    hwegh New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    54
    +1, как аффтар собирается писать статью, если не знает ничего по ее теме?
     
  10. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    hwegh
    kero
    Блин что за бред. Я даже и тему-то не назвал, а вы уже сделали вывод.
    Это раз.
    Во вторых перед тем как что-то делать определись с тем, что по этой теме уже сделано до тебя. Для этого и поднимаются такие вопросы.
    А в третьих идите вы к черту флудеры как выложу черновой вариант тогда и будете судить о личном вкладе и уровне понимания вопроса.
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Это чтобы были незаконны неявные преобразования типа переменных: если объявить "typedef DWORD HWND" и "typedef DWORD HINSTANCE", то компилятор Си не будет ругаться на ошибки типа "HWND h = GetModuleHandle(...);". Все структуры HXXX__ определены как содержащие единственный член (unused, кажется), но согласно стандарту Си являются разными типами.
     
  12. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Блин, народ, во даешь! HMODULE - это адрес, по которому загрузилась либа. А преффикс "H" только вводит в заблуждение.

    Статью я уже и сам давненько хотел "сообразить". Да вот все руки не доходят. А какова будет общая тематика статьи? Просто описать, что такое окно? Это примитив.
    Если копать глубже, то придется довольно сложно - tagWND разнится от винды к винде (хотя некоторые ее члены на своих местах всегда), посему придется перелопатить юзернуюю длл хотябы от трех осей.
    Далее: была мысль написать о сокрытии окон и защиты неубиваемых приложений от "GUI-хаков", но скрыть окно удалением из списков окон не выходит - список ни где не дублируется и юзается системой.

    Вообщем, если что - обращайся...

    PS А в статье не забудь указать первоисточник... ;)
     
  13. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.922
    ИМХО #1 :)
    особенно списки окон, и всё что связано с обработкой окон в графической среде Windows;
    т.е. не с точки зрения создания и управления окнами пользователем, а с точки зрения операционной системы.
     
  14. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Это пожелания к тематике будущей статьи?
     
  15. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.922
    да, если таковые принимаются.
     
  16. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Какой первоисточник имеется в виду ? :)
     
  17. Miller Rabin

    Miller Rabin New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2006
    Сообщения:
    185
    Я пишу статью о специфике разработки коммерческих проектов на уровне драйвера Windows.

    На данный момент я закончил два проекта, которые представляли из себя драйвер.
    Пока я их разрабатывал, я столкнулся с кучей проблем специфики, совместимости и обеспечения стабильности в целом написанного кода. И хотелось бы опубликовать те решения которые появились в ходе работы над проектами.

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

    Я пишу статью не очень быстро потому, что хочу все свои практические решения подкрепить теорией, и чтобы не тяжело было читать.

    В теории я опираюсь на источники:
    У Они Использование WDM
    М Руссинович, Д.Соломон Внутреннее устройство Windows
    С Макконелл Совершенный код.
     
  18. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    kero
    t00x
    Даже не знаю... Напиши конкретно, что тебя интересует.
     
  19. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Miller Rabin

    Может оказаться полезным:
    http://groups.google.ru/group/microsoft.public.win32.programmer.kernel
    http://groups.google.ru/group/comp.os.ms-windows.programmer.nt.kernel-mode
     
  20. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Twister

    >>Какой первоисточник имеется в виду ? :)
    >"на твоем сайте нашел все необходимое"

    А, первоисточник исходников MS :)