|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.11.2013, 14:47 | #1 |
Регистрация: 02.11.2013
Сообщений: 3
|
Собственная ООП обертка над WinAPI окнами
Здравствйте. Мне необходмо написать (без готовых решений) нечто вроде представления WinAPI GUI в виде объектов (Например классы Form, Button, Textarea и тд), и если проблем с созданием самих окон нет как таковых (обертываем в конструкторы с параметрами WinAPI функции), то с обработкой сообщений я так и не придумал как сделать красиво и правильно, хотя идеи и есть. Хочется что бы в итоге это можно было использовать как например в C# в Windows.Forms -что то вроде Window.AddEventHandler(button, "click", this->buttonclick); или прязка к объекту, например, у класса Button есть метод Click(); , при клике на нее, выполнялся именно метод Click объекта на котором он произешел. Думаю понятно. Пишу на C++ . Буду благодарен за любую помощь, советы, примеры.
|
02.11.2013, 17:27 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Посмотрите как сделано в MFC.
Посмотрите как сделано в wxWidgets. Посмотрите как сделано в QT. Самый простой вариант - привязать объект окна к HWND и сделать виртуальный метод OnMessage. |
02.11.2013, 17:59 | #3 |
Регистрация: 02.11.2013
Сообщений: 3
|
У меня была идея на этот счет, сделать в основном классе приложения static map<HWND, "Мойбазовыйклассокон"> и при каждом создании элемента управления добавлять в его конструкторе его HWND в этот map, а в глобальном цикле сообщений искать объект в этом map, но реализация показалась некрасивой, или нормально? MFC и Qt сложноваты для чтения для меня, у меня маловато опыта что бы разбираться в настолько крупных вещах изнутри, да и в Qt насколько знаю иной принцип, там вообще дочерние элементы(кнопки и тд) не создаются как окна, а рисуются Opengl и ищутся по своим координатам
|
13.11.2013, 12:01 | #4 |
Форумчанин
Регистрация: 13.11.2013
Сообщений: 149
|
Если еще интересно, я начал разработку подобной обертки.
Довольно долго пытался реализовать наиболее удобный способ обработки сообщений. На данный момент реализация выбрана и пока не вижу более удобных вариантов. Разработка проекта на https://github.com/nikmoon/ComfortableWindows Готов обсудить любые вопросы и предложения. |
13.11.2013, 12:13 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Если будете сами пользоваться такой оберткой, то сойдет...
Самого себя можно ограничить не использовать GWLP_USERDATA, а вот поди объясни это другим... ID окна можно брать из самого окна - зачем хранить в переменной... |
13.11.2013, 12:19 | #6 | |
Форумчанин
Регистрация: 13.11.2013
Сообщений: 149
|
Цитата:
Насчет ID возможно Вы правы, однако пока не мешает, а дальше видно будет. |
|
01.12.2013, 14:54 | #7 | |
Регистрация: 02.11.2013
Сообщений: 3
|
Цитата:
|
|
02.12.2013, 01:39 | #8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |