我想發佈消息給所有視圖。 我正在考慮讓一個文檔全球參考,然後實現像下面MFC - 如何將消息發佈到從CView類派生的所有視圖?
void SomeAppDoc::DispatchToAll(UINT msg, WPARAM wP, LPARAM lP)
{
//some how get all view's reference
//iterate and update each views
}
什麼是有效的方式方法?
我想發佈消息給所有視圖。 我正在考慮讓一個文檔全球參考,然後實現像下面MFC - 如何將消息發佈到從CView類派生的所有視圖?
void SomeAppDoc::DispatchToAll(UINT msg, WPARAM wP, LPARAM lP)
{
//some how get all view's reference
//iterate and update each views
}
什麼是有效的方式方法?
最簡單的方法是調用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);
}
}
我希望這有助於!
像@ChrisN發佈,GetDocument() - > UpateAllViews是有效的方法。 – zar 2012-01-05 20:48:52
GetDocument() - > UpdateAllViews()不是線程安全的,據我所知。 – webnoon 2012-01-06 00:06:28