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