MFC - Как опубликовать сообщение для всех представлений, которые были получены из класса CView? - PullRequest
2 голосов
/ 05 января 2012

Я хочу опубликовать сообщение для всех просмотров.Я подумываю получить глобальную ссылку Document и затем реализовать метод, подобный приведенному ниже

void SomeAppDoc::DispatchToAll( UINT msg, WPARAM wP, LPARAM lP )
{
  //some how get all view's reference
  //iterate and update each views 
}

Каков эффективный способ?

1 Ответ

2 голосов
/ 06 января 2012

Самый простой способ - вызвать CDocument::UpdateAllViews, который вызывает функцию OnUpdate каждого представления, прикрепленного к документу.

Если вам действительно нужно отправлять сообщение для каждого просмотра, а не вызывать OnUpdate, сделайте что-то похожее на UpdateAllViews:

void SomeAppDoc::DispatchToAll(UINT msg, WPARAM wParam, LPARAM lParam)
{
    POSITION pos = GetFirstViewPosition();
    while (pos != NULL)
    {
        CView* pView = GetNextView(pos);
        pView->PostMessage(msg, wParam, lParam);
    }
}

Надеюсь, это поможет!

...