Пишу сейчас для себя и для общего изучения Win32 API небольшую библиотеку для рисования окон.
И хочется сделать так, что бы окно — это был производный класс от библиотечного.
И еще хочется, что бы методы этого класса можно было регистрировать в качестве обработчиков
сообщений Windows.
Пока пришел к такой идее:
TestWindow *wnd = new TestWindow(L"My Super Window");
Application app = Application(wnd);
/*
Регистрируется обработчик события.
Берется указатель на метод класса.
Приводится к базовому типу. И записывается в структуру-список обработчиков.
Потом WndProc ее вызовет из этой таблицы.
*/
app.registrySlot( (void (Widget::*)()) (&TestWindow::whenWindowClose), ON_CLOSE);
app.registrySlot((void (Widget::*)())(&TestWindow::whenWindowPaint), ON_PAINT);
return app.run();
Это конечно круто, но может кто подскажет вариант по красивше?
Названия классов (некоторых) слегка Qt-шные — привычка =).