Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118

Надо ли регистрировать два класса окна при создании двух окон?

11.11.2018, 13:42. Показов 934. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
В программе создается некоторое окно (CreateWindowEx()). Перед этим, естесственно, регистрируется его класс (RegisterClassEx()).
В этом окне создается кнопка, при нажатии которой должно создаваться ещё одно окно (дочернее). Для него тоже надо регистрировать свой класс? Просто, если можно воспользоваться классом родительского окна, то где указывается процедура дочернего окна?
CreateDialog() использовать не хочу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2018, 13:42
Ответы с готовыми решениями:

Ошибка при создании дескриптора окна при динамическом создании кнопок
public Form1() { InitializeComponent(); } int height = 10; int width = 10; ...

Как в x64 правильно регистрировать классы окон?
По-прежнему функцией RegisterClassEx с параметром типа указатель на WNDCLASSEX?

Утечка памяти при создании перекрёстных окон
Доброго времени суток. Собственно. Есть 2-а окна. В первом окне 2-е кнопки: переход во второе окно и выход, во втором: переход в первое...

4
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
11.11.2018, 14:37
Оконную функцию можно сменить с помощью SetWindowLongPtr(GWLP_WNDPROC). Но делается это уже после создания окна и получения его HWND, так что часть инициализирующих сообщений будет обработано изначальной оконной функцией.
0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
11.11.2018, 15:36  [ТС]
Не уточнил в своем первом сообщении - мне надо обрабатывать сообщения от обоих окон одновременно. Т.е., если я правильно понял описание -
Вызов SetWindowLongPtr с индексом GWLP_WNDPROC создает подкласс класса окна, используемого, чтобы создать окно. Приложение может делить на подклассы системный класс, но не должно делить на подклассы класс окна, созданный другим процессом. Функция SetWindowLongPtr создает подкласс окна, изменяя оконную процедуру, связанную с данным классом окна, заставляя систему вызвать новую оконную процедуру вместо предыдущей процедуры. Приложение должно передавать любые сообщения, не обработанные новой оконной процедурой в предыдущую оконную процедуру при помощи вызова функции CallWindowProc.
эта функция мне не подойдет, т.к. оконная процедура заменяется.
0
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
11.11.2018, 16:39
Мутное у вас описание
Эта функции и нужна что бы заменять оконную процедуру у конкретного окна. Просто она может использоваться для окон со схожим функционалом, когда всё примерно должно работать как и раньше, но за исключением нескольких обработчиков. Тогда можно в новой оконной процедуре сделать нужные обработчики, а для остальных случаев вызвать предыдущую процедуру. Типа наследования классов.
0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
11.11.2018, 19:05  [ТС]
Цитата Сообщение от Ygg Посмотреть сообщение
Мутное у вас описание
Взял отсюда.
Тогда можно в новой оконной процедуре сделать нужные обработчики, а для остальных случаев вызвать предыдущую процедуру.
Не-не. В том-то и дело, что в разных окнах обрабатываются одинаковые сообщения для своих окон - т.е. окно №1 обрабатывает, к примеру, свои WM_SIZE и WM_COMMAND, и окно №2 обрабатывает свои WM_SIZE и WM_COMMAND.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2018, 19:05
Помогаю со студенческими работами здесь

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные вложеного класа. Добавлено через 22...

Использование объекта одного класса при создании нового класса
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать дек. Я поступил так: в приватной части...

Вызов другого класса при создании свойства класса
Здравствуйте! Пишу внутри класса, но не в методе: public $ln = DB::getLang(); DB - это другой класс, getLang() - метод в нём. То есть...

Надо отправить одновременно клики в два окна, одно из которых неактивно
Надо отправить одновременно клики в 2 окна одно из них не активно ! Окна игры wow есть итемка по ней нид кликать много раз с промежутком...

Ошибка при создании окна
При попытке создать окно с уменьшенными копиями изображений выдаёт множество ошибок: Exception in thread "Image Fetcher 0"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru