メインウィンドウで使われてる変数を別ウィンドウで変更するには?


初心者  2003-09-25 17:00:00  No: 52189  IP: [192.*.*.*]

メインウィンドウで表示しているステータスを別ウィンドウである値を変更したら
メインで表示しているそのステータスの表示も変更させるという処理を作成しています。

メインウィンドウはCUNIPULSEViewでクラスを作り CStatic m_staticModeSelect
で宣言しており、これを別ウィンドウのCModeSelectDlgのクラスで参照したいのです。

アクティブウィンドウの場合、GetActiveViewでいけるようなのですが
アクティブでない場合はどうすればよろしいでしょうか?

わかりにくい質問の書き方ですみませんがよろしくお願いします。

編集 削除
YuO  2003-09-25 18:39:30  No: 52190  IP: [192.*.*.*]

> メインウィンドウはCUNIPULSEViewでクラスを作り CStatic m_staticModeSelect
> で宣言しており、これを別ウィンドウのCModeSelectDlgのクラスで参照したいのです。

コントロールを参照したいのですか?
設計からの見直しをお勧めします。


基本的には,何らかのDocumentクラスにデータを保持させておいて,
データの変更をDocumentがViewに通知する,
というのがDocument/Viewアーキテクチャです。

Dialogクラスで変更が生じた場合,
コンストラクタかなんかで受け取っておいたDocumentクラスに対して,
変更を行います。
#これがダイアログ上での値の変更に相当。

そして,Documentの更新が終わったら,
CDocument::UpdateAllViewsを呼び出します。
#DocumentのSetterの内部でSetModifiedFlagを呼び出しておくこと。

そうすると,ViewクラスのCView::OnUpdateが呼び出されます。
このタイミングで,m_staticModeSelectの文字列を変更してやればよいです。

編集 削除