MDIのドキュメントウィンドウの同期

[戻る]
初心者 2008/12/02(火) 17:28:42
環境:
WindowsXP SP2
MicrosoftVisualStudio2005 VisualC++ MFC MDI(ScrollView)

質問:
はじめまして。いつも参考にさせてもらっています。

データファイルから数値を読み取り、OpenGLで描画させ、拡大・縮小させるプログラムを
作っています。
目標はそれぞれ異なるデータを読み込んだ複数個のウィンドウを表示し、マウスホイール
の操作ですべてのウィンドウを同期させながら拡大・縮小させる事です。
現在はデータを読み込み表示させ、マウスホイールで拡大・縮小させるところまで出来て
います。

ただ、ウィンドウ同士の同期の方法がわかりません。
マウスホイールで拡大させるソースは以下になっています。

BOOL CVvtestView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{    scale=scale-zDelta*0.001f;
     if(scale<1.0f) scale=1.1f;
     Invalidate(FALSE);
    return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}


どなたかお分かりになられる方、ご教授お願いします。

επιστημη [E-Mail] [HomePage] 2008/12/02(火) 17:57:17
複数のViewがひとつのDocumentにアタッチされているなら、
そのドキュメントにUpdateAllViewsすれば全ViewにOnUpdateが
飛ぶんで、そいつ使ってスクロール量を通知できないかしら。

しま 2008/12/02(火) 18:23:24
複数あるビューでそれぞれ OnMouseWheel を受取って同じ処理をするのなら

CxxApp か CxxMainFrame かで OnMouseWheel を受け取ってから CxxDocument に
ホイールの変化量を通知して、UpdateAllViews で各ビューに描画させるのが
いいかもしれない

rin 2008/12/02(火) 18:35:31
受け取った子ウィンドウからMainFrameにいったんメッセージを投げて
MainFrameから他の子ウィンドウに投げる

初心者 2008/12/05(金) 00:11:40
[[解決]]
επιστημηさん、しまさん、rinさん、貴重なご意見ありがとうございます。
ここ数日、みなさんのご意見を参考に解決策を模索しましたが、ここまでサンプルソー
ル等を頼りにしてきた自分では完全な実力不足であるようです。

しばらくは必死に勉強したいと思います。
質問できるレベルになったらまた質問させていただきたいと考えていますので、その時
はどうかよろしくお願いします。

古いスレッドには追加発言できません。