| 1 |
/* 円盤複写屋 |
| 2 |
* Copyright (C) 2004 Kagetani Hideto |
| 3 |
*/ |
| 4 |
// EnbanFukusya.cpp : アプリケーション用クラスの定義を行います。 |
| 5 |
// |
| 6 |
|
| 7 |
#include "stdafx.h" |
| 8 |
#include "EnbanFukusya.h" |
| 9 |
#include "EnbanFukusyaDlg.h" |
| 10 |
|
| 11 |
#ifdef _DEBUG |
| 12 |
#define new DEBUG_NEW |
| 13 |
#undef THIS_FILE |
| 14 |
static char THIS_FILE[] = __FILE__; |
| 15 |
#endif |
| 16 |
|
| 17 |
///////////////////////////////////////////////////////////////////////////// |
| 18 |
// CEnbanFukusyaApp |
| 19 |
|
| 20 |
BEGIN_MESSAGE_MAP(CEnbanFukusyaApp, CWinApp) |
| 21 |
//{{AFX_MSG_MAP(CEnbanFukusyaApp) |
| 22 |
// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。 |
| 23 |
// この位置に生成されるコードを編集しないでください。 |
| 24 |
//}}AFX_MSG |
| 25 |
ON_COMMAND(ID_HELP, CWinApp::OnHelp) |
| 26 |
END_MESSAGE_MAP() |
| 27 |
|
| 28 |
///////////////////////////////////////////////////////////////////////////// |
| 29 |
// CEnbanFukusyaApp クラスの構築 |
| 30 |
|
| 31 |
CEnbanFukusyaApp::CEnbanFukusyaApp() |
| 32 |
{ |
| 33 |
// TODO: この位置に構築用のコードを追加してください。 |
| 34 |
// ここに InitInstance 中の重要な初期化処理をすべて記述してください。 |
| 35 |
} |
| 36 |
|
| 37 |
///////////////////////////////////////////////////////////////////////////// |
| 38 |
// 唯一の CEnbanFukusyaApp オブジェクト |
| 39 |
|
| 40 |
CEnbanFukusyaApp theApp; |
| 41 |
|
| 42 |
///////////////////////////////////////////////////////////////////////////// |
| 43 |
// CEnbanFukusyaApp クラスの初期化 |
| 44 |
|
| 45 |
BOOL CEnbanFukusyaApp::InitInstance() |
| 46 |
{ |
| 47 |
// 標準的な初期化処理 |
| 48 |
// もしこれらの機能を使用せず、実行ファイルのサイズを小さくしたけ |
| 49 |
// れば以下の特定の初期化ルーチンの中から不必要なものを削除して |
| 50 |
// ください。 |
| 51 |
|
| 52 |
#ifdef _AFXDLL |
| 53 |
Enable3dControls(); // 共有 DLL 内で MFC を使う場合はここをコールしてください。 |
| 54 |
#else |
| 55 |
Enable3dControlsStatic(); // MFC と静的にリンクする場合はここをコールしてください。 |
| 56 |
#endif |
| 57 |
|
| 58 |
CEnbanFukusyaDlg dlg; |
| 59 |
ParseArgument(&dlg); |
| 60 |
|
| 61 |
m_pMainWnd = &dlg; |
| 62 |
int nResponse = dlg.DoModal(); |
| 63 |
if (nResponse == IDOK) |
| 64 |
{ |
| 65 |
// TODO: ダイアログが <OK> で消された時のコードを |
| 66 |
// 記述してください。 |
| 67 |
} |
| 68 |
else if (nResponse == IDCANCEL) |
| 69 |
{ |
| 70 |
// TODO: ダイアログが <キャンセル> で消された時のコードを |
| 71 |
// 記述してください。 |
| 72 |
} |
| 73 |
|
| 74 |
// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、 |
| 75 |
// アプリケーションを終了するために FALSE を返してください。 |
| 76 |
return FALSE; |
| 77 |
} |
| 78 |
|
| 79 |
void CEnbanFukusyaApp::ParseArgument(CDialog *pDlg) |
| 80 |
{ |
| 81 |
int i; |
| 82 |
char *pCmdLine = strdup(::GetCommandLine()); |
| 83 |
int argc = 0; |
| 84 |
char **argv = NULL; |
| 85 |
char *p, *wp; |
| 86 |
const char *pReader = NULL; |
| 87 |
const char *pWriter = NULL; |
| 88 |
|
| 89 |
if(pDlg == NULL){ |
| 90 |
return; |
| 91 |
} |
| 92 |
if(pCmdLine == NULL){ |
| 93 |
return; |
| 94 |
} |
| 95 |
|
| 96 |
/* |
| 97 |
* コマンドラインを argv 配列にする |
| 98 |
*/ |
| 99 |
p = pCmdLine; |
| 100 |
while(*p != '\0'){ |
| 101 |
if(*p == '\"'){ |
| 102 |
wp = strchr(p+1, '\"'); |
| 103 |
if(wp != NULL){ |
| 104 |
*wp = '\0'; |
| 105 |
wp++; |
| 106 |
p++; |
| 107 |
} |
| 108 |
else{ |
| 109 |
wp = p+strlen(p); |
| 110 |
} |
| 111 |
} |
| 112 |
else{ |
| 113 |
wp = strchr(p, ' '); |
| 114 |
if(wp != NULL){ |
| 115 |
*wp = '\0'; |
| 116 |
wp++; |
| 117 |
} |
| 118 |
else{ |
| 119 |
wp = p+strlen(p); |
| 120 |
} |
| 121 |
} |
| 122 |
argv = (char **)realloc((void *)argv, sizeof(char *)*(argc+1)); |
| 123 |
argv[argc] = p; |
| 124 |
argc++; |
| 125 |
p = wp; |
| 126 |
while(*p == ' ') p++; |
| 127 |
} |
| 128 |
if(argv == NULL){ |
| 129 |
free(pCmdLine); |
| 130 |
} |
| 131 |
|
| 132 |
/* |
| 133 |
* 引数解析 |
| 134 |
*/ |
| 135 |
for(i=1; i<argc; i++){ |
| 136 |
if(pReader == NULL){ |
| 137 |
pReader = argv[i]; |
| 138 |
} |
| 139 |
else if(pWriter == NULL){ |
| 140 |
pWriter = argv[i]; |
| 141 |
} |
| 142 |
} |
| 143 |
if(pReader != NULL){ |
| 144 |
((CEnbanFukusyaDlg *)pDlg)->SetArgReader(pReader); |
| 145 |
} |
| 146 |
if(pWriter != NULL){ |
| 147 |
((CEnbanFukusyaDlg *)pDlg)->SetArgWriter(pWriter); |
| 148 |
} |
| 149 |
|
| 150 |
free(pCmdLine); |
| 151 |
free(argv); |
| 152 |
} |