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

Annotation of OpenXM_contrib2/windows/engine2000/ox_plot.cpp, Revision 1.7

1.1       noro        1: // ox_plot.cpp : アプリケーション用クラスの機能定義を行います。
                      2: //
                      3:
                      4: #include "stdafx.h"
                      5: #include "ox_plot.h"
                      6:
                      7: #include "MainFrm.h"
                      8:
                      9: #ifdef _DEBUG
                     10: #define new DEBUG_NEW
                     11: #undef THIS_FILE
                     12: static char THIS_FILE[] = __FILE__;
                     13: #endif
                     14:
1.7     ! ohara      15: #if defined(MAX)
        !            16: #undef MAX
        !            17: #endif
        !            18: #define MAX(a,b) ((a) > (b) ? (a) : (b) )
        !            19:
1.1       noro       20: extern "C" {
1.7     ! ohara      21: #include "if_canvas.h"
        !            22: extern struct canvas *canvas[];
1.5       noro       23:        extern HANDLE hCanvasCreated;
                     24:        extern HANDLE hMainThreadReady;
1.1       noro       25:        extern HANDLE hStreamNotify;
                     26:        extern HANDLE hStreamNotify_Ack;
                     27:        extern DWORD MainThread;
                     28:        void Init_IO();
                     29: }
                     30: /////////////////////////////////////////////////////////////////////////////
                     31: // COx_plotApp
                     32:
                     33: BEGIN_MESSAGE_MAP(COx_plotApp, CWinApp)
                     34:        //{{AFX_MSG_MAP(COx_plotApp)
                     35:        ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
                     36:        ON_COMMAND(ID_APP_EXIT, OnAppExit)
                     37:        //}}AFX_MSG_MAP
                     38: END_MESSAGE_MAP()
                     39:
                     40: /////////////////////////////////////////////////////////////////////////////
                     41: // COx_plotApp クラスの構築
                     42:
                     43: COx_plotApp::COx_plotApp()
                     44: {
                     45:        // TODO: この位置に構築用コードを追加してください。
                     46:        // ここに InitInstance 中の重要な初期化処理をすべて記述してください。
                     47:        Init_IO();
                     48: }
                     49:
                     50: /////////////////////////////////////////////////////////////////////////////
                     51: // 唯一の COx_plotApp オブジェクト
                     52:
                     53: COx_plotApp theApp;
                     54:
                     55: /////////////////////////////////////////////////////////////////////////////
                     56: // COx_plotApp クラスの初期化
                     57:
                     58: BOOL COx_plotApp::InitInstance()
                     59: {
                     60:        AfxEnableControlContainer();
                     61:
                     62:        // 標準的な初期化処理
                     63:        // もしこれらの機能を使用せず、実行ファイルのサイズを小さく
                     64:        // したければ以下の特定の初期化ルーチンの中から不必要なもの
                     65:        // を削除してください。
                     66:
                     67: #ifdef _AFXDLL
                     68:        Enable3dControls();             // 共有 DLL の中で MFC を使用する場合にはここを呼び出してください。
                     69: #else
                     70:        Enable3dControlsStatic();       // MFC と静的にリンクしている場合にはここを呼び出してください。
                     71: #endif
                     72:
                     73:        // 設定が保存される下のレジストリ キーを変更します。
                     74:        // TODO: この文字列を、会社名または所属など適切なものに
                     75:        // 変更してください。
                     76:        SetRegistryKey(_T("Local AppWizard-Generated Applications"));
                     77:
                     78:
                     79:        // メイン ウインドウを作成するとき、このコードは新しいフレーム ウインドウ オブジェクトを作成し、
                     80:        // それをアプリケーションのメイン ウインドウにセットします
                     81:
                     82:        CMainFrame* pFrame = new CMainFrame;
                     83:        m_pMainWnd = pFrame;
                     84:
                     85:        // フレームをリソースからロードして作成します
                     86:
                     87:        pFrame->m_pWindowName = "dummy window";
                     88:        pFrame->m_cansize.cx = 1;
                     89:        pFrame->m_cansize.cy = 1;
                     90:        pFrame->LoadFrame(IDR_MAINFRAME,
                     91:                WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
                     92:                NULL);
                     93:        MainThread = m_nThreadID;
1.5       noro       94:        SetEvent(hMainThreadReady);
1.1       noro       95:
                     96:        // メイン ウィンドウが初期化されたので、表示と更新を行います。
                     97: //     pFrame->ShowWindow(SW_SHOW);
                     98: //     pFrame->UpdateWindow();
                     99:
                    100:        return TRUE;
                    101: }
                    102:
                    103: /////////////////////////////////////////////////////////////////////////////
                    104: // COx_plotApp message handlers
                    105:
                    106:
                    107:
                    108:
                    109:
                    110: /////////////////////////////////////////////////////////////////////////////
                    111: // アプリケーションのバージョン情報で使われる CAboutDlg ダイアログ
                    112:
                    113: class CAboutDlg : public CDialog
                    114: {
                    115: public:
                    116:        CAboutDlg();
                    117:
                    118: // ダイアログ データ
                    119:        //{{AFX_DATA(CAboutDlg)
                    120:        enum { IDD = IDD_ABOUTBOX };
                    121:        //}}AFX_DATA
                    122:
                    123:        // ClassWizard 仮想関数のオーバーライドを生成します。
                    124:        //{{AFX_VIRTUAL(CAboutDlg)
                    125:        protected:
                    126:        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV のサポート
                    127:        //}}AFX_VIRTUAL
                    128:
                    129: // インプリメンテーション
                    130: protected:
                    131:        //{{AFX_MSG(CAboutDlg)
                    132:                // メッセージ ハンドラはありません。
                    133:        //}}AFX_MSG
                    134:        DECLARE_MESSAGE_MAP()
                    135: };
                    136:
                    137: CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
                    138: {
                    139:        //{{AFX_DATA_INIT(CAboutDlg)
                    140:        //}}AFX_DATA_INIT
                    141: }
                    142:
                    143: void CAboutDlg::DoDataExchange(CDataExchange* pDX)
                    144: {
                    145:        CDialog::DoDataExchange(pDX);
                    146:        //{{AFX_DATA_MAP(CAboutDlg)
                    147:        //}}AFX_DATA_MAP
                    148: }
                    149:
                    150: BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
                    151:        //{{AFX_MSG_MAP(CAboutDlg)
                    152:                // メッセージ ハンドラはありません。
                    153:        //}}AFX_MSG_MAP
                    154: END_MESSAGE_MAP()
                    155:
                    156: // ダイアログを実行するためのアプリケーション コマンド
                    157: void COx_plotApp::OnAppAbout()
                    158: {
                    159:        CAboutDlg aboutDlg;
                    160:        aboutDlg.DoModal();
                    161: }
                    162:
                    163: /////////////////////////////////////////////////////////////////////////////
                    164: // COx_plotApp メッセージ ハンドラ
                    165:
                    166: BOOL COx_plotApp::PreTranslateMessage(MSG* pMsg)
                    167: {
                    168:        // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
                    169:        CMainFrame *pFrame;
                    170:
1.3       noro      171:        if ( pMsg->message == WM_APP ) {
                    172:                struct canvas *can;
1.1       noro      173:
1.3       noro      174:                can = canvas[pMsg->wParam];
1.7     ! ohara     175:                if ( !canvas_window(can) ) {
        !           176:                        char *s = canvas_wname(can);
        !           177:
1.3       noro      178:                        pFrame = new CMainFrame;
                    179:                        /* XXX */
1.7     ! ohara     180:                        pFrame->m_pWindowName = (char *)malloc(MAX(strlen(s),strlen("ox_plot"))+10);
        !           181:                        sprintf(pFrame->m_pWindowName,"%s : %d",strlen(s)?s:"ox_plot",canvas_index(can));
1.3       noro      182:
1.7     ! ohara     183:                        pFrame->m_cansize.cx = canvas_width(can);
        !           184:                        pFrame->m_cansize.cy = canvas_height(can);
1.3       noro      185:                        pFrame->LoadFrame(IDR_MAINFRAME,
                    186:                                WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
                    187:                                NULL);
1.7     ! ohara     188:                        canvas_set_window(can,(void *)pFrame);
1.3       noro      189:                        pFrame->m_wndView.can = can;
                    190:                        pFrame->ShowWindow(SW_SHOW);
                    191:                        pFrame->UpdateWindow();
                    192:                        pFrame->BringWindowToTop();
1.7     ! ohara     193:                        canvas_set_handle(can,pFrame->m_wndView.m_hWnd);
1.3       noro      194:                } else
1.7     ! ohara     195:                        pFrame = (CMainFrame *)canvas_window(can);
1.3       noro      196:                pFrame->RedrawWindow();
1.5       noro      197:                SetEvent(hCanvasCreated);
                    198:        }
1.1       noro      199:        return CWinApp::PreTranslateMessage(pMsg);
                    200: }
                    201:
                    202: void COx_plotApp::OnAppExit()
                    203: {
                    204:        // TODO: この位置にコマンド ハンドラ用のコードを追加してください
                    205: }
                    206:
                    207: BOOL COx_plotApp::OnIdle(LONG lCount)
                    208: {
                    209:        // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
                    210:
                    211:        return CWinApp::OnIdle(lCount);
                    212: }
                    213:
                    214: void COx_plotApp::OnFilePrintSetup()
                    215: {
                    216:        // XXX: the following function is protected.
                    217:        CWinApp::OnFilePrintSetup();
                    218: }

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