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