Отрисовка кнопок класса button

Тема в разделе "WASM.WIN32", создана пользователем Rockphorr, 25 фев 2023.

  1. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Собственно в какой dll находится код отвечающий за отрисовку кнопок класса button ?
     
  2. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Смотря какой кнопки. Может быть comctl32, а может user32.
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Rockphorr, (Привет! Давно тебя не было :) )

    20 способов создания кнопки

    06.jpg

    Исходный текст взят на сайте Исходники Assembler
     

    Вложения:

    • buttonspgm.zip
      Размер файла:
      197,1 КБ
      Просмотров:
      176
  4. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Благодарю, на досуге посмотрю.
    Самой обычной как ок, отмена или пуск.
     
  5. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    У всякого окна можно GetWindowLong'ом получить GWL_WNDPROC, и етот самый вндпрок будет находиться в образе модуля, который зарегистрировал класс данного окна (или варварски засабклассил его).
     
    Mikl___ нравится это.
  6. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Это зависит от манифеста. Если кнопка со стилями то в comctl32 если без то user32.
    --- Сообщение объединено, 26 фев 2023 ---
    Такое не будет работать для SetWindowSubclass которая будет возвращать всегда адрес в пределах Comctl32.
    --- Сообщение объединено, 26 фев 2023 ---
    Оригинальную процедуру можно получить через GetClassInfoEx
     
    Mikl___ нравится это.
  7. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    olly.JPG
    Вот на скрине программа хеллоу ворлд, создается окно типа button вызывается SetWindowLongA (я меняю функцию на свою, а в своей вызываю оригинальную) и мне она возвращает значение по которому можно вызвать оригинальную функцию с помощью CallWinowProc(значение возвращенноеSetWindowLongA)

    Как собственно понять из какого модуля ?? скорее всего comctl32 это исключено так как не подключал его инклуд файл

    по f7 в вызовы dll зайти не получается
     
    Последнее редактирование: 27 фев 2023
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Rockphorr,
    GetModuleHandleEx возвращает базу модуля по адресу.
     
    Mikl___ нравится это.
  9. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia

    Syntax

    C++
    BOOL GetModuleHandleExA(
    [in] DWORD dwFlags,
    [in, optional] LPCSTR lpModuleName,
    [out] HMODULE *phModule
    );

    Parameters

    [in] dwFlags
    This parameter can be zero or one or more of the following values. If the module's reference count is incremented, the caller must use the FreeLibrary function to decrement the reference count when the module handle is no longer needed.
    GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x00000004)

    The lpModuleName parameter is an address in the module.

    а если система допотопная - win95 ?
     
  10. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Я настолько обратной совместимостью не страдаю :)
     
  11. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Я нашел, для Windows 95 это 16 битная библиотека user.exe
    --- Сообщение объединено, 15 авг 2023 ---
    как насчет Windows 3.11 и Norton Desktop ???
     
    TrashGen нравится это.
  12. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Собственно вопрос по NE формату user.exe --- сайс показывает в скобочках число когда трассируется код из user.exe --- правильно ли я понял что это номер сегмента, ибо экспериментальное подтверждение тому было запись этого номера и смещение куска кода в сайсе, а потом поиск кода из сайса в IDA перебором номеров сегментов и указания смещения ??? (номер в скобках у сайса совпал с номером в ида)
     
    Последнее редактирование: 1 окт 2023