一つのDocと複数のViewのメッセージハンドラの件 – プログラミング – Home

一つのDocと複数のViewのメッセー...
 
通知
すべてクリア

[解決済] 一つのDocと複数のViewのメッセージハンドラの件


たろう
 たろう
(@たろう)
ゲスト
結合: 25年前
投稿: 51
Topic starter  

VC++6.0 MFC Windows98 です
先ほどの質問に関連した内容ですが
宜しく御願い致します

  XXXCDoc クラス ---->(a)
  XXXCView   クラス ----(b)
   Viewクラスをもうひとつ作成
  XXXView2(基本クラスをCView)--->(c)

それぞれのViewにメッセージを処理する関数を追加
しました。
(メニュー項目のメッセージハンドラであるCOMMANDを使用)
(b)には XXXCView:OnTEST1(){
AfxMessageBox(TEST1);
}
(c)には xxxCView2:OnTEST2(){
AfxMessageBox(TEST2);
}
ところが(b)は正常に処理するのですが
(c)は反応が有りません

宜しく御願いします


引用未解決
トピックタグ
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

View2クラス型変数を管理しているクラスをCxxxとし、
View2へのポインタ変数をm_pView2として、
CxxxのOnCmdMsg()を以下のようにオーバーライドすると、うまくいくかも...?

BOOL Cxxx::OnCmdMsg(UINT nID,int nCode,void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo)
{
if(Cxxxの基底クラス::OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))
return TRUE;

if(m_pView2)
return m_pView2->OnCmdMsg(nID,nCode,pExtra,pHandlerInfo);

return FALSE;
}


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

http://support.microsoft.com/default.aspx?scid=kb;ja;141334
あなたの実現したい事と同等のサンプルのはずです是非参考にしてみてください

格VIEWごとに、
void SetFromDoc();
BOOL SetToDoc(); // Called from SwitchView()
を用意しておくことと

XXXXAppに用意する
CView * SwitchView( UINT nIndex ); // Switch between views
BOOL SaveActiveViewsData(); // Save/Validate active views data

protected:

// Array of views attached to single document
CView * m_pViews[NUMVIEWS];
// Index to current view
UINT m_nCurView;
を理解できるようになれば
前回の質問とあわせ一挙に解決できるのではないでしょうか

また
XXXXAppのInitInstanceなどもきちんとご理解できるといいと思います


返信引用
たろう
 たろう
(@たろう)
ゲスト
結合: 25年前
投稿: 51
Topic starter  

nさん woodさんどうも有難うございます

ただ、内容が難しく又今後有効活用して行くためにも
じっくりと取り組みたく、実装の作動確認はしていないのですが
解決としたいです

(時間がかかりそうなので ^^)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました