Важная информация
Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 47

Тема: Как под windows при создании окна передать данные в оконную процедуру?

  1. #1 Как под windows при создании окна передать данные в оконную процедуру? 
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Как под windows при создании окна передать данные в оконную процедуру? Требуется при создании нескольких дочерних окон одного класса передать им некоторые данные так, чтоб они были уникальны для каждого экземпляра окна, но при этом сохранялись от вызова к вызову? В идеале это должен быть шестилдесятичетёрхбитный указатель. У каждого экземпляра окна свой.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,950
    Сказал(а) спасибо
    1,847
    Поблагодарили 992 раз(а) в 850 сообщениях
    Записей в блоге
    1
    Сам бы завёл глобалку на каждый экземпляр, никаких указателей(линкер же всё знает). Или требуется ультрасекретность между частями приложения?
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  3. #3  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Какую глобалку? Вы о чём? Класс окна один, соответственно и оконная процедура одна. И к глобальной переменной будет обращаться к одной и той же. И переменные как раз глобальные, но их много и передать требуется указатели именно на эти переменные. Дело не в секретности, а в том, что оконная процедура должна вообще различать эти переменные. Если нужен будет доступ к не своим переменным, сложу их в массив, тогда вычислить указатели на не свои элементы будет не проблема, также как и получить указатель на нулевой элемент.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  4. #4  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 249 раз(а) в 164 сообщениях
    Я вообще ничего не понял.
    Есть класс окна, в нем есть метод (вы называете его оконной процедурой).
    Есть несколько (не известно сколько) экземпляров окна.

    Дальше что? В чем проблема?
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  5. #5  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Нет. Ни каких методов. Класс окна - это вообще не ООП класс, его экземпляры не имеют this и в нём может быть только одна функция, не являющаяся членом с точки зрения языка - оконная процедура. Это не метод, с точки зрения языка это обычная функция. Есть настоящий ООП класс, а у него есть экземпляры и есть класс окна также с экземплярами. Количество экземпляров ООП класса равно количеству экземпляров окна и требуется связать каждый экземпляр окна с одним экземпляром ООП класса таким образом, чтоб оконная процедура могла при обработке событий каждого окна обращаться именно к своему экземпляру ООП класса. Если я просто пропишу обращение к глобальному объекту, то это будет одни и тот же объект для всех окон. А надо, чтоб оконная процедура обращалась к разным объектам. Например, требуется при обработке WM_PAINT отрисовать в каждом окне определённое поле именно своего объекта. При этом подлежащее отрисовке поле во всех случаях зовут одинаково. Но в каждом окне надо отрисовать поле своего объекта и поле каждого объекта требуется отрисовать в своём окне. В принципе я могу отрисовку перенести в метод ООП класса, а из оконной процедуры вызывать его. А от какого именно объекта вызывать метод? Вызывающий код один и тот же. Для простоты можете считать, что класс окна - это ООП класс с одной особенностью - он имеет ровно один метод и этот метод статический. К экземпляру окна вызов метода привязывается явным параметром, содержащим дескриптор окна, и это делает сама система. Но надо ещё привязать каждый вызов к экземпляру другого класса уже с не статическими методами и эта связь должна быть один к одному.
    Последний раз редактировалось Сионист; 07.03.2016 в 13:11.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  6. #6  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    CreateWindowEx параметр lpParam. Ловится в WM_CREATE.
    UA6527P
    Ответить с цитированием  
     

  7. #7  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Ол комплит. А куда его положить? Если в обычную static переменную, так она будет общей для всех экземпляров окна. Проблема не в том, что окно не может обратиться к глобальной переменной, а в том, что требуется различать много объектов. Есть что нибудь подобное GetWindowWord, но получающее не два байта, а значение, разрядность которого совпадает с разрядностью указателя?
    Последний раз редактировалось Сионист; 07.03.2016 в 14:02.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  8. #8  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,950
    Сказал(а) спасибо
    1,847
    Поблагодарили 992 раз(а) в 850 сообщениях
    Записей в блоге
    1
    Какую глобалку? Вы о чём?
    О класcичеком варианте, процедурный код на чистом WinAPI. Как вы это завернёте в ООП - чисто ваша проблема, если вы хотите
    его использвать, но способов много и большинство делаются через области видимости.

    а в том, что оконная процедура должна вообще различать эти переменные.
    В оконную процедуру приходит hwnd, ещё вопросы?
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  9. #9  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Проблема именно в том, что область видимости одна для всей процедуры.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  10. #10  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    В оконную процедуру приходит hwnd, ещё вопросы?
    А я прям не знаю. Но это дескриптор окна, а не тех данных, которые к нему надо прикрутить.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

Страница 1 из 5 123 ... ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 25.09.2014, 23:57
  2. Ответов: 1
    Последнее сообщение: 25.09.2014, 23:57
  3. Помощь в создании программы
    от Zamin в разделе Общие вопросы web-разработки
    Ответов: 2
    Последнее сообщение: 19.01.2014, 14:14
  4. Ответов: 0
    Последнее сообщение: 08.12.2013, 13:03
  5. При создании .exe выдает ошибку
    от Редиска в разделе QBasic
    Ответов: 14
    Последнее сообщение: 12.08.2011, 14:37
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •