Создание собственного класса.

Тема в разделе "WASM.WIN32", создана пользователем rza, 1 июл 2010.

  1. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    Создаю собственный класс (допустим кнопка) каждая кнопка это свое окно. для каждой кнопки выделяется память для параметров (размеры, цвет и т. д.). подскажите где и как хранить адреса параметров, чтоб в обработчике событий легко получить параметры именно нужной кнопки. Сейчас идея хранить адрес выделенной памяти в "cbWndExtra". и в обработчике событий получать по хэндлу окна. Есть другой способ?
     
  2. Marazm

    Marazm Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    95
    SetWindowLong с параметром GWL_USERDATA например.
     
  3. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    я про этот метод и говорил. Думал есть еще какие варианты.
     
  4. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    rza,

    Вариантов может быть много, но хранение данных об окне в структуре окна выглядит наиболее органично. А какой язык используется?
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Наиболее органично это функции - аксессоры.
     
  7. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Есть ещё SetProp/GetProp - прикрепляет данные к HWND.
    Но они гораздо медленнее - сделано через распознавание строк.
     
  8. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    язык ассемблер.
     
  9. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    язык ассемблер.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    rza
    И что?
     
  11. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    Это ответ на вопрос "А какой язык используется?".

    Собственно остановился на "SetWindowLong", "GetWindowLong". Но столкнулся вот с какой проблемой. Как только я зарегестрировал класс "RegisterClass". Уже происходит вызов процедуры обработки сообщений. Которая пытается прочитать параметры кнопки. А их я не могу установить пока не создам само окно и не получу его хэндл.
    Как быть?
     
  12. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    Сейчас решил проверять результат после "GetWindowLong" на 0 значение. Если 0 то параметров еще нет.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Так что мешает сделать функции с помощью которых можно менять и получать параметры?
     
  14. rza

    rza New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2009
    Сообщения:
    21
    Так и сделал. Вроде работает. спс.
     
  15. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    rza
    Что-то у Вас не то с кодом. Я сейчас проверил в отладчике: RegisterClass НЕ ВЫЗЫВАЕТ процедуру сообщений.