// MainFrm.cpp : CMainFrame クラスの動作の定義を行います。 // #include "stdafx.h" #include "asir32gui.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() //}}AFX_MSG_MAP ON_UPDATE_COMMAND_UI(ID_INDICATOR_HEAP,OnUpdateHeapSize) END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // ステータス ライン インジケータ ID_INDICATOR_KANA, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ID_INDICATOR_HEAP, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame クラスの構築/消滅 CMainFrame *theFrame; CMainFrame::CMainFrame() { // TODO: この位置にメンバの初期化処理コードを追加してください。 theFrame = this; } CMainFrame::~CMainFrame() { } extern "C" { extern int asir_main_window; } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if ( asir_main_window ) { if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // 作成に失敗 } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // 作成に失敗 } // TODO: もしツール チップスが必要ない場合、ここを削除してください。 m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // TODO: ツール バーをドッキング可能にしない場合は以下の3行を削除 // してください。 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); } return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを // 修正してください。 if ( asir_main_window ) { cs.cx = ::GetSystemMetrics(SM_CXSCREEN)*2 / 3; cs.cy = ::GetSystemMetrics(SM_CYSCREEN)*2 / 3; } else { cs.cx = ::GetSystemMetrics(SM_CXSCREEN)*2 / 5; cs.cy = ::GetSystemMetrics(SM_CYSCREEN)*1 / 5; } return CFrameWnd::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMainFrame クラスの診断 #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame メッセージ ハンドラ extern "C" { extern int AsirHeapSize; void show_window(int on) { if ( on ) theFrame->ShowWindow(SW_SHOW); else theFrame->ShowWindow(SW_HIDE); } } void CMainFrame::OnUpdateHeapSize(CCmdUI *pCmdUI) { pCmdUI->Enable(); CString strHeap; strHeap.Format("HeapSize %dBytes",AsirHeapSize); pCmdUI->SetText(strHeap); }