Annotation of OpenXM_contrib2/windows/asir32gui/asir32gui.cpp, Revision 1.3
1.1 noro 1: // asir32gui.cpp : アプリケーション用クラスの機能定義を行います。
2: //
3:
4: #include "stdafx.h"
5: #include "asir32gui.h"
6:
7: #include "MainFrm.h"
8: #include "asir32guiDoc.h"
9: #include "Asir32guiView.h"
10: #include "FatalDialog.h"
1.3 ! ohara 11: #include <winnls.h>
! 12: #include <string.h>
! 13: #include <stdio.h>
1.1 noro 14:
15: #ifdef _DEBUG
16: #define new DEBUG_NEW
17: #undef THIS_FILE
18: static char THIS_FILE[] = __FILE__;
19: #endif
20:
21: extern "C" {
22: extern HANDLE hNotify;
23: extern HANDLE hNotify_Ack;
1.2 noro 24: extern int asirgui_kind;
1.1 noro 25: BOOL Init_IO(char *);
1.3 ! ohara 26: BOOL get_rootdir(char *,int,char *);
1.1 noro 27: void read_and_insert();
28: }
29:
30: /////////////////////////////////////////////////////////////////////////////
31: // CAsir32guiApp
32:
33: BEGIN_MESSAGE_MAP(CAsir32guiApp, CWinApp)
34: //{{AFX_MSG_MAP(CAsir32guiApp)
35: ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
36: //}}AFX_MSG_MAP
37: // 標準のファイル基本ドキュメント コマンド
38: // 標準の印刷セットアップ コマンド
39: // ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
40: END_MESSAGE_MAP()
41:
42: /////////////////////////////////////////////////////////////////////////////
43: // CAsir32guiApp クラスの構築
44:
45: CAsir32guiApp::CAsir32guiApp()
46: {
47: // TODO: この位置に構築用コードを追加してください。
48: // ここに InitInstance 中の重要な初期化処理をすべて記述してください。
49: char errmsg[BUFSIZ];
50:
51: if ( Init_IO(errmsg) == FALSE ) {
52: CFatalDialog fatalDlg;
53: fatalDlg.m_errmsg = errmsg;
54: fatalDlg.DoModal();
55: exit(0);
56: }
57: }
58:
59: /////////////////////////////////////////////////////////////////////////////
60: // 唯一の CAsir32guiApp オブジェクト
61:
62: CAsir32guiApp theApp;
63:
64:
65: /////////////////////////////////////////////////////////////////////////////
66: // CAsir32guiApp クラスの初期化
67:
68: BOOL CAsir32guiApp::InitInstance()
69: {
70: // 標準的な初期化処理
71: // もしこれらの機能を使用せず、実行ファイルのサイズを小さく
72: // したければ以下の特定の初期化ルーチンの中から不必要なもの
73: // を削除してください。
74:
1.3 ! ohara 75: char lang[BUFSIZ];
! 76: char dll[BUFSIZ];
! 77: char root[BUFSIZ];
! 78: char errmsg[BUFSIZ];
! 79: HINSTANCE hRes;
! 80: get_rootdir(root,sizeof(root),errmsg);
! 81: if(GetLocaleInfo(GetUserDefaultLCID(), LOCALE_SISO639LANGNAME, lang, BUFSIZ)) {
! 82: sprintf(dll, "%s\\bin\\%s.dll", root, lang);
! 83: hRes = LoadLibrary(dll);
! 84: if(hRes) {
! 85: AfxSetResourceHandle(hRes);
! 86: }
! 87: }
! 88:
1.1 noro 89: #ifdef _AFXDLL
90: Enable3dControls(); // 共有 DLL の中で MFC を使用する場合にはここをコールしてください。
91: #else
92: Enable3dControlsStatic(); // MFC と静的にリンクしている場合にはここをコールしてください。
93: #endif
94:
95: LoadStdProfileSettings(); // 標準の INI ファイルのオプションをロードします (MRU を含む)
96: // アプリケーション用のドキュメント テンプレートを登録します。ドキュメント テンプレート
97: // はドキュメント、フレーム ウィンドウとビューを結合するために機能します。
98:
99: CSingleDocTemplate* pDocTemplate;
100: pDocTemplate = new CSingleDocTemplate(
1.2 noro 101: asirgui_kind==ASIRGUI_MAIN?IDR_MAINFRAME:IDR_DEBUGFRAME,
1.1 noro 102: RUNTIME_CLASS(CAsir32guiDoc),
103: RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ
104: RUNTIME_CLASS(CAsir32guiView));
105: AddDocTemplate(pDocTemplate);
106:
107: // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
108: CCommandLineInfo cmdInfo;
109: // ParseCommandLine(cmdInfo);
110:
111: // コマンドラインでディスパッチ コマンドを指定します。
112: if (!ProcessShellCommand(cmdInfo))
113: return FALSE;
114:
115: return TRUE;
116: }
117:
118: /////////////////////////////////////////////////////////////////////////////
119: // アプリケーションのバージョン情報で使われる CAboutDlg ダイアログ
120:
121: class CAboutDlg : public CDialog
122: {
123: public:
124: CAboutDlg();
125:
126: // ダイアログ データ
127: //{{AFX_DATA(CAboutDlg)
128: enum { IDD = IDD_ABOUTBOX };
129: //}}AFX_DATA
130:
131: // ClassWizard は仮想関数を生成しオーバーライドします。
132: //{{AFX_VIRTUAL(CAboutDlg)
133: protected:
134: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート
135: //}}AFX_VIRTUAL
136:
137: // Implementation
138: protected:
139: //{{AFX_MSG(CAboutDlg)
140: // メッセージ ハンドラはありません。
141: //}}AFX_MSG
142: DECLARE_MESSAGE_MAP()
143: };
144:
145: CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
146: {
147: //{{AFX_DATA_INIT(CAboutDlg)
148: //}}AFX_DATA_INIT
149: }
150:
151: void CAboutDlg::DoDataExchange(CDataExchange* pDX)
152: {
153: CDialog::DoDataExchange(pDX);
154: //{{AFX_DATA_MAP(CAboutDlg)
155: //}}AFX_DATA_MAP
156: }
157:
158: BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
159: //{{AFX_MSG_MAP(CAboutDlg)
160: // メッセージ ハンドラがありません。
161: //}}AFX_MSG_MAP
162: END_MESSAGE_MAP()
163:
164: // ダイアログを実行するためのアプリケーション コマンド
165: void CAsir32guiApp::OnAppAbout()
166: {
167: CAboutDlg aboutDlg;
168: aboutDlg.DoModal();
169: }
170:
171: /////////////////////////////////////////////////////////////////////////////
172: // CAsir32guiApp コマンド
173:
174: BOOL CAsir32guiApp::OnIdle(LONG lCount)
175: {
176: // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
177:
178: if ( CWinApp::OnIdle(lCount) )
179: return TRUE;
180: while ( 1 ) {
181: int retcode = ::MsgWaitForMultipleObjects(1,&hNotify,FALSE,-1,QS_ALLINPUT);
182: retcode -= WAIT_OBJECT_0;
183: if ( retcode == 0 ) {
184: ResetEvent(hNotify);
185: SetEvent(hNotify_Ack);
186: read_and_insert();
187: } else
188: break;
189: }
190: return TRUE;
191: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>