Здравствуйте AkaSaint, Вы писали:
AS>Здравствуйте Павел Кузнецов, Вы писали:
ПК>>Здравствуйте AkaSaint, Вы писали:
AS>>>Вопрос: как можно реализовать сабж на чистом С/С++ или в MSVC 7?
ПК>>В каком контексте? Решений есть несколько, каждое хорошо на своем месте.
AS>Контекст такой: есть класс — окно со скином, он предоставляет возможность тому, кто его использует, устанавливать свои обработчики сообщений, типа OnClose.
в этом случае гораздо удобнее воспользоваться интерфейсами, заводишь структуру типа этой
struct CSkinedWndEventsSink
{
virtual void OnClose( ) = 0;
virtual void OnChotToTam( ) = 0;
};
у твоего класса заводишь методы
class CSkinedWnd //это вроде как твой класс
{
void Connect( CSkinedWndEventsSink *pSink );
void Disconnect( CSkinedWndEventsSink *pSink );
}
что они должны делать понятно вроде
ну а теперь любой кто хочет обрабатывать события от CSkinedWnd должен наследоваться от CSkinedWndEventsSink и реализовать его методы. А в рантайме где надо приконнектится, а где надо отконнектится
это упрощенный вариант обработки событий успользуемый в COM, так что можешь почитать для ознакомления с оригиналом
Ed.ward