[BACK]Return to asir32gui.cpp CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / windows / asir32gui

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>