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