Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2013, 14:47   #1
Surgery
 
Регистрация: 02.11.2013
Сообщений: 3
По умолчанию Собственная ООП обертка над WinAPI окнами

Здравствйте. Мне необходмо написать (без готовых решений) нечто вроде представления WinAPI GUI в виде объектов (Например классы Form, Button, Textarea и тд), и если проблем с созданием самих окон нет как таковых (обертываем в конструкторы с параметрами WinAPI функции), то с обработкой сообщений я так и не придумал как сделать красиво и правильно, хотя идеи и есть. Хочется что бы в итоге это можно было использовать как например в C# в Windows.Forms -что то вроде Window.AddEventHandler(button, "click", this->buttonclick); или прязка к объекту, например, у класса Button есть метод Click(); , при клике на нее, выполнялся именно метод Click объекта на котором он произешел. Думаю понятно. Пишу на C++ . Буду благодарен за любую помощь, советы, примеры.
Surgery вне форума Ответить с цитированием
Старый 02.11.2013, 17:27   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Посмотрите как сделано в MFC.
Посмотрите как сделано в wxWidgets.
Посмотрите как сделано в QT.

Самый простой вариант - привязать объект окна к HWND и сделать виртуальный метод OnMessage.
waleri вне форума Ответить с цитированием
Старый 02.11.2013, 17:59   #3
Surgery
 
Регистрация: 02.11.2013
Сообщений: 3
По умолчанию

У меня была идея на этот счет, сделать в основном классе приложения static map<HWND, "Мойбазовыйклассокон"> и при каждом создании элемента управления добавлять в его конструкторе его HWND в этот map, а в глобальном цикле сообщений искать объект в этом map, но реализация показалась некрасивой, или нормально? MFC и Qt сложноваты для чтения для меня, у меня маловато опыта что бы разбираться в настолько крупных вещах изнутри, да и в Qt насколько знаю иной принцип, там вообще дочерние элементы(кнопки и тд) не создаются как окна, а рисуются Opengl и ищутся по своим координатам
Surgery вне форума Ответить с цитированием
Старый 13.11.2013, 12:01   #4
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Если еще интересно, я начал разработку подобной обертки.
Довольно долго пытался реализовать наиболее удобный способ обработки сообщений. На данный момент реализация выбрана и пока не вижу более удобных вариантов. Разработка проекта на https://github.com/nikmoon/ComfortableWindows
Готов обсудить любые вопросы и предложения.
nikmoon вне форума Ответить с цитированием
Старый 13.11.2013, 12:13   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Если будете сами пользоваться такой оберткой, то сойдет...
Самого себя можно ограничить не использовать GWLP_USERDATA, а вот поди объясни это другим...

ID окна можно брать из самого окна - зачем хранить в переменной...
waleri вне форума Ответить с цитированием
Старый 13.11.2013, 12:19   #6
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Если будете сами пользоваться такой оберткой, то сойдет...
Самого себя можно ограничить не использовать GWLP_USERDATA, а вот поди объясни это другим...

ID окна можно брать из самого окна - зачем хранить в переменной...
Конечный вариант библиотеки подразумевает, что использующие ее вообще не будут пользоваться WinAPI, поэтому GWLP_USERDATA в неприкосновенности.
Насчет ID возможно Вы правы, однако пока не мешает, а дальше видно будет.
nikmoon вне форума Ответить с цитированием
Старый 01.12.2013, 14:54   #7
Surgery
 
Регистрация: 02.11.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от nikmoon Посмотреть сообщение
Если еще интересно, я начал разработку подобной обертки.
Довольно долго пытался реализовать наиболее удобный способ обработки сообщений. На данный момент реализация выбрана и пока не вижу более удобных вариантов. Разработка проекта на https://github.com/nikmoon/ComfortableWindows
Готов обсудить любые вопросы и предложения.
А можно пример использования? По коду я понял идею, но она кажется не очень законченой, или просто я не понял чего то
Surgery вне форума Ответить с цитированием
Старый 02.12.2013, 01:39   #8
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Surgery Посмотреть сообщение
...Пишу на C++ .
В каком году, в каком году
Всё это было с нами?..
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Unicode-обертка над std::stream Granus Общие вопросы C/C++ 13 19.12.2012 22:04
Flash-обертка для управления звуком Zer0 Фриланс 0 13.08.2012 13:19
Над Desktop'ом но под всеми остальными окнами Crivel Общие вопросы Delphi 6 18.06.2009 11:25
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55