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