2012-05-09 55 views
0

我使用Static Splitting將行列和列(如(1x2)或(3x3)等等)劃分爲VC++ 6 MFC應用程序的主視圖。MFC應用程序僅更新當前視圖

其中一個部件點擊時是Active View。

當我繪製一個形狀說,在活動視圖上的一個圓/矩形,所有其他視圖猿在活動視圖上繪製的形狀。我如何避免這種情況?

我嘗試使用Active View作爲第一個參數的UpdateAllViews()。它仍然是這樣。

任何想法?

+0

你能發表一些代碼嗎?不知道任何事情都很難說。 –

+0

答案在於我正在使用相同的文檔(C Doc)將Shapes繪製到主類視圖的每個分割視圖上。當我移動形狀列表(幫助遍歷圖像上繪製的形狀以便在必要時重繪它們的示例)到View類並處理該圖形時,它可以正常工作(這意味着其他視圖不會重複這些形狀不合需要)。 – esh

回答

0

如果您對所有視圖使用相同的類,則這是預期的行爲,因爲拆分器會將所有視圖連線到同一個文檔對象。我假定你正在使用文檔對象來繪製數據存儲。

UpdateAllViews用於在文檔中的數據更改時更新視圖。然後每個視圖使用文檔數據來呈現對這些數據的不同視覺解釋。因此,每個視圖都會是一個不同類型的視圖(由不同的類表示)知道如何可視化數據。

例如:文檔用於存儲數組數組。三個視圖將這些數字顯示爲十進制,十六進制和二進制表示。 如果更改了一個數字,則會通知所有視圖以更新自己的表示。

在你的情況下,工作解決方案是將繪圖數據移動到視圖而不是文檔。很可能您的應用程序根本不需要文檔。

0

UpdateAllViews()爲每個視圖調用OnUpdate()函數。 OnUpdate()的默認實現會使客戶區失效(討論簡單的「圖形」視圖,如CView()或CScrollView())。您可以覆蓋OnUpdate()成員並在lHint和/或pHint參數中對所需的行爲進行編碼(就涉及無效/更新而言)。

相關問題