// MfcKatsunari.cpp : アプリケーション用クラスの機能定義を行います。 // #include "stdafx.h" #define MAIN_SRC #include "MfcKatsunari.h" #include "MainFrm.h" #include "MfcKatsunariDoc.h" #include "MfcKatsunariView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMfcKatsunariApp BEGIN_MESSAGE_MAP(CMfcKatsunariApp, CWinApp) //{{AFX_MSG_MAP(CMfcKatsunariApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。 // この位置に生成されるコードを編集しないでください。 //}}AFX_MSG_MAP // 標準のファイル基本ドキュメント コマンド ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // 標準の印刷セットアップ コマンド ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMfcKatsunariApp クラスの構築 CMfcKatsunariApp::CMfcKatsunariApp() { // TODO: この位置に構築用コードを追加してください。 // ここに InitInstance 中の重要な初期化処理をすべて記述してください。 } ///////////////////////////////////////////////////////////////////////////// // 唯一の CMfcKatsunariApp オブジェクト CMfcKatsunariApp theApp; ///////////////////////////////////////////////////////////////////////////// // CMfcKatsunariApp クラスの初期化 static HINSTANCE hLib; static int InitComm(void) { hLib = LoadLibrary("cgfcom"); if(hLib==NULL) { // ::MessageBox(NULL,"ERROR:not able to use cgfcom.dll","InitComm",MB_OK|MB_ICONEXCLAMATION); return -1; } initcom = (BOOL(*)(int))GetProcAddress(hLib,"initcom"); if(initcom <= 0) { FreeLibrary(hLib); return -1; } closecom = (BOOL(*)(VOID))GetProcAddress(hLib,"closecom"); if(closecom <= 0) { FreeLibrary(hLib); return -1; } sendxy = (BOOL(*)(int, int))GetProcAddress(hLib,"sendxy"); if(sendxy <= 0) { FreeLibrary(hLib); return -1; } receivexy = (BOOL(*)(int *, int *))GetProcAddress(hLib,"receivexy"); if(receivexy <= 0) { FreeLibrary(hLib); return -1; } newgame = (BOOL(*)(int))GetProcAddress(hLib,"newgame"); if(newgame <= 0) { FreeLibrary(hLib); return -1; } return 0; } BOOL CMfcKatsunariApp::InitInstance() { // 標準的な初期化処理 // もしこれらの機能を使用せず、実行ファイルのサイズを小さく // したければ以下の特定の初期化ルーチンの中から不必要なもの // を削除してください。 #ifdef _AFXDLL // Enable3dControls(); // 共有 DLL の中で MFC を使用する場合にはここをコールしてください。 #else // Enable3dControlsStatic(); // MFC と静的にリンクしている場合にはここをコールしてください。 #endif SetRegistryKey("YasuhiroIke\\KatsunariUI"); LoadStdProfileSettings(); // 標準の INI ファイルのオプションをロードします (MRU を含む) // アプリケーション用のドキュメント テンプレートを登録します。ドキュメント テンプレート // はドキュメント、フレーム ウィンドウとビューを結合するために機能します。 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMfcKatsunariDoc), RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ RUNTIME_CLASS(CMfcKatsunariView)); AddDocTemplate(pDocTemplate); // 各Iconの読み出し hMarkIcon[0]=LoadIcon(IDI_MARK); hHoshiIcon[0]=LoadIcon(IDI_HOSHI); hMarkIcon[1]=LoadIcon(IDI_MARK_L); hHoshiIcon[1]=LoadIcon(IDI_HOSHI_L); hBlackStoneIcon[0]=LoadIcon(IDI_BLACKSTONE); hWhiteStoneIcon[0]=LoadIcon(IDI_WHITESTONE); hBlackStoneIcon[1]=LoadIcon(IDI_BLACKSTONE_L); hWhiteStoneIcon[1]=LoadIcon(IDI_WHITESTONE_L); hRedSquareIcon[0]=LoadIcon(IDI_REDSQUARE); hRedSquareIcon[1]=LoadIcon(IDI_REDSQUARE_L); hStoneIcon[SPACE][0]=LoadIcon(IDI_NULLICON); hStoneIcon[BLACK][0]=hBlackStoneIcon[0]; hStoneIcon[WHITE][0]=hWhiteStoneIcon[0]; hStoneIcon[3][0]=LoadIcon(IDI_BLACKSTAR); hStoneIcon[4][0]=LoadIcon(IDI_WHITESTAR); hStoneIcon[5][0]=LoadIcon(IDI_BLACKSTONE); hStoneIcon[6][0]=LoadIcon(IDI_WHITESTONE); hStoneIcon[7][0]=LoadIcon(IDI_BLACK_AREA); hStoneIcon[8][0]=LoadIcon(IDI_WHITE_AREA); hStoneIcon[9][0]=LoadIcon(IDI_BLACK_DIAMOND); hStoneIcon[10][0]=LoadIcon(IDI_WHITE_DIAMOND); hStoneIcon[11][0]=LoadIcon(IDI_BLACK_UP); hStoneIcon[12][0]=LoadIcon(IDI_WHITE_UP); hStoneIcon[13][0]=LoadIcon(IDI_BLACK_DOWN); hStoneIcon[14][0]=LoadIcon(IDI_WHITE_DOWN); hStoneIcon[15][0]=LoadIcon(IDI_BLACKSTAR); hStoneIcon[16][0]=LoadIcon(IDI_WHITESTAR); hStoneIcon[17][0]=LoadIcon(IDI_BLACK_CAPTURED); hStoneIcon[18][0]=LoadIcon(IDI_WHITE_CAPTURED); hStoneIcon[SPACE][1]=LoadIcon(IDI_NULLICON); hStoneIcon[BLACK][1]=hBlackStoneIcon[1]; hStoneIcon[WHITE][1]=hWhiteStoneIcon[1]; hStoneIcon[3][1]=LoadIcon(IDI_BLACKSTAR); hStoneIcon[4][1]=LoadIcon(IDI_WHITESTAR); hStoneIcon[5][1]=LoadIcon(IDI_BLACKSTONE_L); hStoneIcon[6][1]=LoadIcon(IDI_WHITESTONE_L); hStoneIcon[7][1]=LoadIcon(IDI_BLACK_AREA_L); hStoneIcon[8][1]=LoadIcon(IDI_WHITE_AREA_L); hStoneIcon[9][1]=LoadIcon(IDI_BLACK_DIAMOND_L); hStoneIcon[10][1]=LoadIcon(IDI_WHITE_DIAMOND_L); hStoneIcon[11][1]=LoadIcon(IDI_BLACK_UP); hStoneIcon[12][1]=LoadIcon(IDI_WHITE_UP); hStoneIcon[13][1]=LoadIcon(IDI_BLACK_DOWN); hStoneIcon[14][1]=LoadIcon(IDI_WHITE_DOWN); hStoneIcon[15][1]=LoadIcon(IDI_BLACKSTAR); hStoneIcon[16][1]=LoadIcon(IDI_WHITESTAR); hStoneIcon[17][1]=LoadIcon(IDI_BLACK_CAPTURED_L); hStoneIcon[18][1]=LoadIcon(IDI_WHITE_CAPTURED_L); hStoneCursor[BLACK][0]=LoadCursor(IDC_BLACK_MOVING); hStoneCursor[WHITE][0]=LoadCursor(IDC_WHITE_MOVING); hStoneCursor[BLACK][1]=LoadCursor(IDC_BLACK_MOVING_L); hStoneCursor[WHITE][1]=LoadCursor(IDC_WHITE_MOVING_L); // 通信の初期化 if (InitComm()) { m_bCommUseable=false; } else { m_bCommUseable=true; } // 音を読み込む HGLOBAL hSound = LoadResource(NULL, FindResource(NULL, MAKEINTRESOURCE(IDR_WAVE_STONE), "WAVE")); if (hSound == NULL) return FALSE; lpSound = LockResource(hSound); // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // コマンドラインでディスパッチ コマンドを指定します。 if (!ProcessShellCommand(cmdInfo)) return FALSE; return TRUE; } ///////////////////////////////////////////////////////////////////////////// // アプリケーションのバージョン情報で使われる CAboutDlg ダイアログ class CAboutDlg : public CDialog { public: CAboutDlg(); // ダイアログ データ //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard は仮想関数を生成しオーバーライドします。 //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) // メッセージ ハンドラはありません。 //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // メッセージ ハンドラがありません。 //}}AFX_MSG_MAP END_MESSAGE_MAP() // ダイアログを実行するためのアプリケーション コマンド void CMfcKatsunariApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CMfcKatsunariApp コマンド BOOL CMfcKatsunariApp::PreTranslateMessage(MSG* pMsg) { return CWinApp::PreTranslateMessage(pMsg); } extern "C" void myprintf(char *p,...) { static char Buf[1024]; va_list ap; va_start(ap,p); vsprintf_s(Buf,sizeof(Buf),p,ap); va_end(ap); TRACE(Buf); } BOOL CMfcKatsunariApp::OnIdle(LONG lCount) { // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください return CWinApp::OnIdle(lCount); }