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>