powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++, Создание класса "Окно" для управления WinAPI
7 сообщений из 7, страница 1 из 1
C++, Создание класса "Окно" для управления WinAPI
    #38334985
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю GUI-приложение, пытаюсь описать класс, отвечающий за окно и такие же классы, отвечающие за кнопки и прочее (наподобие wxFrame в wxWidgets, TForm в борланд билдере и т.п., но, естественно, упрощенно). в нём будут методы OnSize(), OnPaint() и т.п., вызываемые при получении сообщений WM_SIZE, WM_PAINT и т.п. - короче говоря, работать я уже буду только с ним (с объектом класса) без всяких разборок с полученными сообщениями и т.п. - так, как это происходит при работе с той же wxWidgets или в борланд билдере.

столкнулся с проблемой - WindowProc() должна быть отдельной функцией, не являющейся методом описываемого класса, и как следствие она не имеет к нему никакого доступа. подскажите, как быть в данной ситуации?

посоветуйте литературу или ссылки на статьи
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38334986
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Как создать подобную оболочку ?
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38335003
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323короче говоря, работать я уже буду только с ним (с объектом класса) без всяких разборок с полученными сообщениями и т.п.
ну разборки всё равно придётся где-то делать- в методе класса, ответственном за вызов OnSize(), OnPaint() и т.п.
gera3323WindowProc() должна быть отдельной функцией, не являющейся методом описываемого класса, и как следствие она не имеет к нему никакого доступа. подскажите, как быть в данной ситуации?
WindowProc всё равно останется отдельной функцией, которой придётся найти экземпляр класса, ассоциированного с хэндлом окна.
Варианты хранения указателя на экземпляр класса - в экстрабайтах window instance (см cbWndExtra), в словаре, динамически генерить WindowProc и зашивать указатель в него.
А если речь об окне с единственным инстансом - просто в глобальной переменной хранить указатель

Как именно - можно смотреть в исходниках библиотек, того гляди желание пропадёт велосипед строить
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38335038
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут простейшая обертка
http://habrahabr.ru/post/123648/
посмотри, может допилишь
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38335045
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Slaтут простейшая обертка
http://habrahabr.ru/post/123648/
посмотри, может допилишь
в говнокоде ошибка:
Код: plaintext
1.
wndc.cbWndExtra=0;
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38335290
WndExtra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилm_Slaтут простейшая обертка
http://habrahabr.ru/post/123648/
посмотри, может допилишь
в говнокоде ошибка:
Код: plaintext
1.
wndc.cbWndExtra=0;


Для GWL_USERDATA экстра память ненужна. Но хранить там указатель - говнокод.
...
Рейтинг: 0 / 0
C++, Создание класса "Окно" для управления WinAPI
    #38335308
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323 WindowProc() должна быть отдельной функцией, не являющейся методом описываемого класса,

Это не так =)

Просто функции обратного вызова(callback) должны объявляться как static иначе никто не гарантирует что указатель на функцию не будет указывать в космос (крайне не рекомендуется заставлять программу выполнять код из космоса)

в общем гугл в помощь )
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++, Создание класса "Окно" для управления WinAPI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]