// MainFrm.cpp : CMainFrame クラスの実装
//
include “stdafx.h”
//============================================================
//============================================================
include “ControlPracticeDoc.h”
//============================================================
//============================================================
include “ControlPractice.h”
include “ControlPracticeView.h”
include “LeftFormVew.h”
include “RightFormVew.h”
//============================================================
//============================================================
include “MainFrm.h”
//============================================================
//============================================================
ifdef _DEBUG
define new DEBUG_NEW
endif
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_MESSAGE(ID_VEW_CHENGER,OneVewChenger)//VEWを切り替えます
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // ステータス ライン インジケータ
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CMainFrame コンストラクション/デストラクション
CMainFrame::CMainFrame()
{
// TODO: メンバ初期化コードをここに追加してください。
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
CMainFrame::~CMainFrame()
{
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) )
{
TRACE0("ツール バーの作成に失敗しました。\n");
return -1; // 作成できませんでした。
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("ステータス バーの作成に失敗しました。\n");
return -1; // 作成できませんでした。
}
// TODO: ツール バーをドッキング可能にしない場合は、これらの 3 行を削除してください。
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
// 修正してください。
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CMainFrame 診断
ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
endif //_DEBUG
// CMainFrame メッセージ ハンドラ
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
CDocument* CMainFrame::EkGetActiveDocument()
{
CWnd* pWnd=AfxGetMainWnd();
if (pWnd==NULL) return(NULL);
ASSERT_VALID(pWnd);
ASSERT_KINDOF(CFrameWnd,pWnd);
CFrameWnd* pMainFrame=static_cast>(pWnd); CFrameWnd pActiveFrame=pMainFrame->GetActiveFrame();
if (pActiveFrame==NULL) return(NULL);
return(pActiveFrame->GetActiveDocument());
}
/////////////////////////////////////////////////////////////////////////////
///////////////////////////ここにブレ-クを掛けます//////////////////////////
//////////////////////////一番始めに呼ばれて来ます //////////////////////////
// MainFrame メッセージ ハンドラ
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /lpcs/,CCreateContext* pContext)
{
CRect FramSize;
GetClientRect(FramSize);
//---------------------
if (!m_wndSplitter.CreateStatic(this,1,2))//メイン画面は1行2列
{
TRACE0("Failed to create nested splitter\n");
return FALSE;
}
//---------------------
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(ControlPracticeView),CSize(300,FramSize.bottom), pContext))
{
TRACE0("Failed to create third pane\n");
return FALSE;
}
//---------------------
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(RightFormVew),CSize(980,FramSize.bottom), pContext))
{
TRACE0("Failed to create third pane\n");
return FALSE;
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
///////////////////// Vewを切り替えます ///////////////////////////
/////////////////////////////////////////////////////////////////////////////
LRESULT CMainFrame::OneVewChenger(WPARAM wParam, LPARAM lParam)
{
CDocument* pActiveDoc=EkGetActiveDocument();//現在の有効なドキュメントクラスを取得する
CControlPracticeDoc* pMyDoc;
//======================================================================================
if (pActiveDoc==NULL)
{
if(pActiveDoc->IsKindOf(RUNTIME_CLASS(CControlPracticeDoc))){
pMyDoc=static_cast<CControlPracticeDoc*>(pActiveDoc);
}
}
//======================================================================================
else if(pActiveDoc->IsKindOf(RUNTIME_CLASS(CControlPracticeDoc))){
pMyDoc=static_cast<CControlPracticeDoc*>(pActiveDoc);
}
//======================フォ-ムビュからこの位置でブレ-クが掛かります==================
if((pMyDoc->FormVewNmcer & 0x11)==0x11) {
pMyDoc->FormVewNmcer&=0xee;pMyDoc->UpdateAllViews(NULL,ID_FORM_LEFT_UPDATE_ID_OK_DIS ,this) ;}//リセット 0x11
if((pMyDoc->FormVewNmcer & 0x12)==0x12) {
pMyDoc->FormVewNmcer&=0xed;pMyDoc->UpdateAllViews(NULL,ID_FORM_LEFT_UPDATE_ID_CANCEL_DIS,this);}//リセット 0x12
//==========================向かって右側から要求が発信されて此処で停止します===========================
if((pMyDoc->FormVewNmcer & 0x21)==0x21) {
//OKボタンが押された時に此処で止まります >>直ぐに返信します
pMyDoc->FormVewNmcer&=0xde;pMyDoc->UpdateAllViews(NULL,ID_FORM_RIGHT_UPDATE_ID_OK_DIS ,this) ;}//リセット 0x21
if((pMyDoc->FormVewNmcer & 0x22)==0x22) {
//CANCELボタンが押された時に此処で止まります >>直ぐに返信します
pMyDoc->FormVewNmcer&=0xdd;pMyDoc->UpdateAllViews(NULL,ID_FORM_RIGHTUPDATE_ID_CANCSL_DIS,this);}//リセット 0x22
if((pMyDoc->FormVewNmcer & 0x44)==0x44) {
//印刷ボタンが押された時に此処で止まります >>直ぐに返信します
pMyDoc->FormVewNmcer&=0xbb;pMyDoc->FormVewNmcer&=0xdd;pMyDoc->UpdateAllViews(NULL,IDS_TO_PRINT,this);}//リセット 0x44
//======================================================================================
return TRUE;
}