Могу ли я прикрепить CBitmapButton к родительскому CWnd вместо родительского CDialog?
Я унаследовал проект (изначально написанный для Win95!), Который имеет несколько кнопок, прикрепленных к родительскому окну, производному от CWnd. Сами кнопки находятся в определяемом пользователем классе, производном от CWnd, поэтому они не являются "настоящими" кнопками, а представляют собой небольшие окна, определяемые миллиардами строк кода, и имеют массу проблем с отображением, над которыми я потел в течение нескольких недель, без разрешения в поле зрения.
На днях мы пришли к выводу, что CBitmapButton выглядит как отличная альтернатива. Выглядит просто, определите 4 растровых изображения для разных состояний кнопок. Все, что мне нужно, это BN_CLICKED, чтобы запустить обработчик, и я буду золотым.
Поработав с этим некоторое время, настроив кнопку и несколько растровых изображений, я смог отобразить CBitmapButton; не выглядел великолепно, но я могу это исправить... проблема СЕЙЧАС в том, что я попытался настроить карту сообщений для захвата сообщения BN_CLICKED, но так как родительское окно получено из CWnd вместо CDialog, я получаю синтаксические ошибки настройка карты сообщений. Прочитайте MSDN по этому вопросу несколько раз, и кажется, что вы можете только подключить CBitmapButton к классу, производному от CDialog. Это кажется мне довольно странным - я просто хочу кнопку, и она должна быть в состоянии передать простое "меня нажали" любому родителю, к которому он привязан, но, очевидно, не суждено случиться.
Итак, кто-нибудь успешно прикрепил CBitmapButton к производному от CWnd родителю; и если да, то как настроить карту сообщений, которая будет работать с этими вещами? В качестве альтернативы, какой подход вы бы использовали для настройки класса кнопки, который бы работал с родителем CWnd, поскольку CBitmapButton и CButton, кажется, требуют наличия CDialog в качестве родителей?
1 ответ
Нет, это не требует, чтобы ваше родительское окно всегда было CDiaglot, вы даже можете наследовать от CWnd и создать внутри него CButton/CBitmapButton.
Вы можете переопределить OnCommand
сообщение в вашем CWnd
производный класс и нажмите кнопку события нажатия.