0

(1x2) や (3x3) などの行と列で静的分割を使用して、VC++6 MFC アプリケーションのメイン ビューを分割しました。

クリックすると、これらのパーツの 1 つがアクティブ ビューになります。

アクティブ ビューで円/長方形などの図形を描画すると、他のすべてのビューがアクティブ ビューで描画した図形を模倣します。どうすればそれを回避できますか?

最初の引数としてアクティブ ビューを使用して UpdateAllViews() を試しました。それはまだ同じことをします。

何か案は?

4

2 に答える 2

0

UpdateAllViews() は、ビューごとに OnUpdate() 関数を呼び出します。OnUpdate() のデフォルトの実装は、クライアント領域を無効にします (CView() や CScrollView() のような単純な「グラフィック」ビューについて話します)。OnUpdate() メンバーをオーバーライドし、(無効化/更新に関する限り) lHint および/または pHint パラメーターで目的の動作をエンコードできます。

于 2012-05-09T14:34:52.733 に答える
0

すべてのビューに同じクラスを使用している場合、スプリッターはすべてのビューを同じドキュメント オブジェクトに接続するため、これは予想される動作です。図面データの保存にドキュメントオブジェクトを使用していると思います。

UpdateAllViews は、ドキュメント内のデータが変更された場合にビューを更新するために使用されます。次に、各ビューはドキュメントのデータを使用して、このデータのさまざまな視覚的解釈をレンダリングします。したがって、各ビューは、データを視覚化する方法を知っている (異なるクラスによって表される) 異なるタイプになります。

例: document は数値配列を格納するために使用されます。3 つのビューは、これらの数値を 10 進数、16 進数、および 2 進数で表示しています。1 つの番号が変更されると、すべてのビューが通知され、独自の表現が更新されます。

あなたの場合、実際の解決策は、図面データをドキュメントではなくビューに移動することです。ほとんどの場合、アプリケーションはドキュメントをまったく必要としません。

于 2012-05-10T03:13:24.493 に答える