トップ
新規
一覧
単語検索
最終更新
ヘルプ
ログイン
アールメカブ
VC_FormView
をテンプレートにして作成
開始行:
Form View で ダイアログを入れ換える方法
まず そのプロジェクト名(F:\program\VC_2000\TowForm\TwoFo...
#define IDU_CHANGE_VIEW (WM_USER + 101)
#define IDU_CHANGE_VIEW2 (WM_USER + 101)
そのプロジェクトの(メイン)フレームクラスのヘッダ MainFr...
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg LRESULT OnChangeView(WPARAM wParam, LPARAM lPara...
afx_msg LRESULT OnChangeView2(WPARAM wParam, LPARAM lPar...
DECLARE_MESSAGE_MAP()
そのプロジェクトの(メイン)フレームクラスのクラスファイ...
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_MESSAGE(IDU_CHANGE_VIEW,OnChangeView)
ON_MESSAGE(IDU_CHANGE_VIEW2,OnChangeView2)
END_MESSAGE_MAP()
// CMainFrame メッセージ ハンドラ
MainFrm.cpp に OnChangeView, OnChangeView2 を以下のように...
OnChangeView2 の方では pNewViewClass = RUNTIME_CLASS(CTwo...
とオリジナルの View クラスを指定する。
LRESULT CMainFrame::OnChangeView(WPARAM wParam,LPARAM lP...
CView* pOldActiveView = GetActiveView();
CRuntimeClass* pNewViewClass;
pNewViewClass = RUNTIME_CLASS(CNew);新しいViewクラス名
// create the new view
CCreateContext context;
context.m_pNewViewClass = pNewViewClass;
context.m_pCurrentDoc = GetActiveDocument();
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&con...
if (pNewView != NULL){
// the new view is there, but invisible and not active...
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
SetActiveView(pNewView);
RecalcLayout(); // finally destroy the old view...
pOldActiveView->DestroyWindow();
}
return 0L;
}
新しいダイアログ IDD_FORMVIEW を FormView 型として作成し...
新しいクラス CNew を,FormView を継承元として作成。
New.h に以下を追加
#include "TwoFormDoc.h"
...
public:
CTwoFormDoc* GetDocument() const;
...
#ifndef _DEBUG
inline CTwoFormDoc* CNew::GetDocument() const
{ return reinterpret_cast(m_pDocument); }
#endif
New.cpp に以下を追加
CTwoFormDoc* CNew::GetDocument() const
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTwoFormDoc)));
return (CTwoFormDoc*)m_pDocument;
}
#endif //_DEBUG
またオリジナルのViewクラスのヘッダファイル (TwoFormView.h...
#include "TwoFormDoc.h"
これにより,両方の ViewClass から以下のようにして Doc ク...
CTwoFormDoc * pDoc = (CTwoFormDoc *) GetDocument();
変更メッセージの発信元 (例えばオリジナルの View クラスの...
void CViewChangeView::OnBnClickedButton1()
{
// TODO : ここにコントロール通知ハンドラ コードを追加...
CWnd *pwd = GetParentFrame();
pwd->SendMessage(IDU_CHANGE_VIEW,0L,0L);
}
終了行:
Form View で ダイアログを入れ換える方法
まず そのプロジェクト名(F:\program\VC_2000\TowForm\TwoFo...
#define IDU_CHANGE_VIEW (WM_USER + 101)
#define IDU_CHANGE_VIEW2 (WM_USER + 101)
そのプロジェクトの(メイン)フレームクラスのヘッダ MainFr...
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg LRESULT OnChangeView(WPARAM wParam, LPARAM lPara...
afx_msg LRESULT OnChangeView2(WPARAM wParam, LPARAM lPar...
DECLARE_MESSAGE_MAP()
そのプロジェクトの(メイン)フレームクラスのクラスファイ...
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_MESSAGE(IDU_CHANGE_VIEW,OnChangeView)
ON_MESSAGE(IDU_CHANGE_VIEW2,OnChangeView2)
END_MESSAGE_MAP()
// CMainFrame メッセージ ハンドラ
MainFrm.cpp に OnChangeView, OnChangeView2 を以下のように...
OnChangeView2 の方では pNewViewClass = RUNTIME_CLASS(CTwo...
とオリジナルの View クラスを指定する。
LRESULT CMainFrame::OnChangeView(WPARAM wParam,LPARAM lP...
CView* pOldActiveView = GetActiveView();
CRuntimeClass* pNewViewClass;
pNewViewClass = RUNTIME_CLASS(CNew);新しいViewクラス名
// create the new view
CCreateContext context;
context.m_pNewViewClass = pNewViewClass;
context.m_pCurrentDoc = GetActiveDocument();
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&con...
if (pNewView != NULL){
// the new view is there, but invisible and not active...
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
SetActiveView(pNewView);
RecalcLayout(); // finally destroy the old view...
pOldActiveView->DestroyWindow();
}
return 0L;
}
新しいダイアログ IDD_FORMVIEW を FormView 型として作成し...
新しいクラス CNew を,FormView を継承元として作成。
New.h に以下を追加
#include "TwoFormDoc.h"
...
public:
CTwoFormDoc* GetDocument() const;
...
#ifndef _DEBUG
inline CTwoFormDoc* CNew::GetDocument() const
{ return reinterpret_cast(m_pDocument); }
#endif
New.cpp に以下を追加
CTwoFormDoc* CNew::GetDocument() const
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTwoFormDoc)));
return (CTwoFormDoc*)m_pDocument;
}
#endif //_DEBUG
またオリジナルのViewクラスのヘッダファイル (TwoFormView.h...
#include "TwoFormDoc.h"
これにより,両方の ViewClass から以下のようにして Doc ク...
CTwoFormDoc * pDoc = (CTwoFormDoc *) GetDocument();
変更メッセージの発信元 (例えばオリジナルの View クラスの...
void CViewChangeView::OnBnClickedButton1()
{
// TODO : ここにコントロール通知ハンドラ コードを追加...
CWnd *pwd = GetParentFrame();
pwd->SendMessage(IDU_CHANGE_VIEW,0L,0L);
}
ページ名: