[BACK]Return to MainFrm.cpp CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / windows / engine2000

Annotation of OpenXM_contrib2/windows/engine2000/MainFrm.cpp, Revision 1.2

1.1       noro        1: // MainFrm.cpp : CMainFrame クラスの動作の定義を行います。
                      2: //
                      3:
                      4: #include "stdafx.h"
                      5: #include "ox_plot.h"
                      6:
                      7: #include "MainFrm.h"
                      8:
                      9: extern "C" {
                     10: #include "ca.h"
                     11: #include "ifplot.h"
                     12: }
                     13:
                     14: #ifdef _DEBUG
                     15: #define new DEBUG_NEW
                     16: #undef THIS_FILE
                     17: static char THIS_FILE[] = __FILE__;
                     18: #endif
                     19:
                     20: /////////////////////////////////////////////////////////////////////////////
                     21: // CMainFrame
                     22:
                     23: IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
                     24:
                     25: BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
                     26:        //{{AFX_MSG_MAP(CMainFrame)
                     27:        ON_WM_CREATE()
                     28:        ON_WM_SETFOCUS()
                     29:        ON_WM_CLOSE()
                     30:        ON_COMMAND(ID_APP_EXIT, OnAppExit)
                     31:        //}}AFX_MSG_MAP
                     32:        ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
                     33:        ON_COMMAND(ID_FILE_PRINT_SETUP, OnFilePrintSetup)
                     34:        ON_UPDATE_COMMAND_UI(ID_INDICATOR_PROGRESS,OnUpdateProgress)
                     35: END_MESSAGE_MAP()
                     36:
                     37: static UINT indicators[] =
                     38: {
                     39:        ID_SEPARATOR,           // ステータス ライン インジケータ
                     40:        ID_INDICATOR_PROGRESS,
                     41: //     ID_INDICATOR_KANA,
                     42: //     ID_INDICATOR_CAPS,
                     43: //     ID_INDICATOR_NUM,
                     44: //     ID_INDICATOR_SCRL,
                     45: };
                     46: /////////////////////////////////////////////////////////////////////////////
                     47: // CMainFrame クラスの構築/消滅
                     48:
                     49: CMainFrame::CMainFrame()
                     50: {
                     51:        // TODO: この位置にメンバの初期化処理コードを追加してください。
                     52:
                     53: }
                     54:
                     55: CMainFrame::~CMainFrame()
                     56: {
                     57: }
                     58:
                     59: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
                     60: {
                     61:        if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
                     62:                return -1;
                     63:        // フレームのクライアント領域全体を占めるビューを作成します。
                     64:        if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
                     65:                CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
                     66:        {
                     67:                TRACE0("Failed to create view window\n");
                     68:                return -1;
                     69:        }
                     70:        if (!m_wndStatusBar.Create(this) ||
                     71:                !m_wndStatusBar.SetIndicators(indicators,
                     72:                  sizeof(indicators)/sizeof(UINT)))
                     73:        {
                     74:                TRACE0("Failed to create status bar\n");
                     75:                return -1;      // 作成に失敗
                     76:        }
                     77:
                     78:        m_nProgress = 100;
                     79:
                     80:        UINT nID,nStyle;
                     81:        int cxWidth;
                     82:
                     83:        m_wndStatusBar.GetPaneInfo(0,nID,nStyle,cxWidth);
                     84:        cxWidth = 0;
                     85:        m_wndStatusBar.SetPaneInfo(0,nID,nStyle,cxWidth);
                     86:
                     87:        m_wndStatusBar.GetPaneInfo(1,nID,nStyle,cxWidth);
                     88:        cxWidth = 150;
                     89:        m_wndStatusBar.SetPaneInfo(1,nID,nStyle,cxWidth);
                     90:
                     91:        return 0;
                     92: }
                     93:
                     94: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
                     95: {
                     96:        if( !CFrameWnd::PreCreateWindow(cs) )
                     97:                return FALSE;
                     98:        // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
                     99:        //       修正してください。
                    100:
                    101:        cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
                    102:        cs.lpszClass = AfxRegisterWndClass(0);
                    103:        cs.lpszName = m_pWindowName;
                    104:        cs.cx = m_cansize.cx+20; /* XXX */
                    105:        cs.cy = m_cansize.cy+80; /* XXX */
                    106:        return TRUE;
                    107: }
                    108:
                    109: /////////////////////////////////////////////////////////////////////////////
                    110: // CMainFrame クラスの診断
                    111:
                    112: #ifdef _DEBUG
                    113: void CMainFrame::AssertValid() const
                    114: {
                    115:        CFrameWnd::AssertValid();
                    116: }
                    117:
                    118: void CMainFrame::Dump(CDumpContext& dc) const
                    119: {
                    120:        CFrameWnd::Dump(dc);
                    121: }
                    122:
                    123: #endif //_DEBUG
                    124:
                    125: /////////////////////////////////////////////////////////////////////////////
                    126: // CMainFrame メッセージ ハンドラ
                    127: void CMainFrame::OnSetFocus(CWnd* pOldWnd)
                    128: {
                    129:        // ビュー ウィンドウにフォーカスを与えます。
                    130:        m_wndView.SetFocus();
                    131: }
                    132:
                    133: BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
                    134: {
                    135:        // ビューに最初にコマンドを処理する機会を与えます。
                    136:        if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
                    137:                return TRUE;
                    138:
                    139:        // 処理されなかった場合にはデフォルトの処理を行います。
                    140:        return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
                    141: }
                    142:
                    143:
                    144: void CMainFrame::OnClose()
                    145: {
                    146:        // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
                    147:        m_wndView.DestroyCanvas();
1.2     ! noro      148: //     CFrameWnd::OnClose();
1.1       noro      149: }
                    150:
                    151: void CMainFrame::OnAppExit()
                    152: {
                    153:        // TODO: この位置にコマンド ハンドラ用のコードを追加してください
                    154:        OnClose();
                    155: }
                    156:
                    157: void CMainFrame::OnUpdateProgress(CCmdUI *pCmdUI)
                    158: {
                    159:        int mode;
                    160:        CString strProgress;
                    161:
                    162:        if ( !m_wndView.can )
                    163:                return;
                    164:        switch ( mode = m_wndView.can->mode ) {
                    165:                case MODE_IFPLOT: case MODE_CONPLOT:
                    166:                        pCmdUI->Enable();
                    167:                        strProgress.Format("%s%d%%",m_wndView.can->prefix,m_wndView.can->percentage);
                    168:                        pCmdUI->SetText(strProgress);
                    169:                        break;
                    170:                default:
                    171:                        break;
                    172:        }
                    173: }
                    174:
                    175: void CMainFrame::OnFilePrintSetup()
                    176: {
                    177:        theApp.OnFilePrintSetup();
                    178: }
                    179:
                    180: void CMainFrame::OnFilePrint()
                    181: {
                    182:        CDC dc;
                    183:        CPrintDialog pd(TRUE);
                    184:        int ret;
                    185:
                    186:        ret = theApp.DoPrintDialog(&pd);
                    187:        if ( ret == IDOK ) {
                    188:                theApp.CreatePrinterDC(dc);
                    189:                m_wndView.OnPrint(dc);
                    190:        }
                    191: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>