INT_PTR CALLBACK CEpgDataCap_BonDlg::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { CEpgDataCap_BonDlg* pSys = (CEpgDataCap_BonDlg*)GetWindowLongPtr(hDlg, GWLP_USERDATA); if( pSys == NULL && uMsg != WM_INITDIALOG ){ return FALSE; } switch( uMsg ){ case WM_INITDIALOG: SetWindowLongPtr(hDlg, GWLP_USERDATA, lParam); pSys = (CEpgDataCap_BonDlg*)lParam; pSys->m_hWnd = hDlg; pSys->m_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, GetCurrentThreadId()); return pSys->OnInitDialog(); case WM_NCDESTROY: UnhookWindowsHookEx(pSys->m_hKeyboardHook); pSys->m_hWnd = NULL; break; case WM_DESTROY: pSys->OnDestroy(); break; case WM_TIMER: pSys->OnTimer(wParam); break; case WM_SIZE: pSys->OnSize((UINT)wParam, LOWORD(lParam), HIWORD(lParam)); break; case WM_QUERYENDSESSION: SetWindowLongPtr(hDlg, DWLP_MSGRESULT, pSys->OnQueryEndSession()); return TRUE; case WM_ENDSESSION: pSys->OnEndSession((BOOL)wParam); break; case WM_COMMAND: switch( LOWORD(wParam) ){ case IDC_COMBO_TUNER: if( HIWORD(wParam) == CBN_SELCHANGE ){ pSys->OnCbnSelchangeComboTuner(); } break; case IDC_COMBO_SERVICE: if( HIWORD(wParam) == CBN_SELCHANGE ){ pSys->OnCbnSelchangeComboService(); } break; case IDC_BUTTON_SET: pSys->OnBnClickedButtonSet(); break; case IDC_BUTTON_CHSCAN: pSys->OnBnClickedButtonChscan(); break; case IDC_BUTTON_EPG: pSys->OnBnClickedButtonEpg(); break; case IDC_BUTTON_REC: pSys->OnBnClickedButtonRec(); break; case IDC_CHECK_REC_SET: pSys->OnBnClickedCheckRecSet(); break; case IDC_BUTTON_CANCEL: pSys->OnBnClickedButtonCancel(); break; case IDC_CHECK_TCP: pSys->OnBnClickedCheckTcp(); break; case IDC_CHECK_UDP: pSys->OnBnClickedCheckUdp(); break; case IDC_BUTTON_VIEW: pSys->OnBnClickedButtonView(); break; case IDC_CHECK_NEXTPG: pSys->OnBnClickedCheckNextpg(); break; case IDOK: case IDCANCEL: EndDialog(hDlg, LOWORD(wParam)); SetWindowLongPtr(hDlg, DWLP_MSGRESULT, 0); return TRUE; } break; case WM_SYSCOMMAND: { BOOL bProcessed = FALSE; pSys->OnSysCommand((UINT)(wParam & 0xFFF0), lParam, &bProcessed); if( bProcessed != FALSE ){ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, 0); return TRUE; } } break; default: if( uMsg == taskbarCreated ){ pSys->OnTaskbarCreated(wParam, lParam); }else if( uMsg >= WM_USER ){ pSys->WindowProc(uMsg, wParam, lParam); } break; } return FALSE; }
BOOL CEpgDataCap_BonApp::InitInstance() { // アプリケーション マニフェストが visual スタイルを有効にするために、 // ComCtl32.dll Version 6 以降の使用を指定する場合は、 // Windows XP に InitCommonControlsEx() が必要です。さもなければ、ウィンドウ作成はすべて失敗します。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // アプリケーションで使用するすべてのコモン コントロール クラスを含めるには、 // これを設定します。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); SetProcessShutdownParameters(0x300, 0); // コマンドオプションを解析 CCmdLineUtil cCmdUtil; int argc; LPWSTR *argv = CommandLineToArgvW(GetCommandLine(), &argc); if (argv != NULL) { for (int i = 1; i < argc; i++) { BOOL bFlag = argv[i][0] == L'-' || argv[i][0] == L'/' ? TRUE : FALSE; cCmdUtil.ParseParam(&argv[i][bFlag ? 1 : 0], bFlag, i == argc - 1 ? TRUE : FALSE); } LocalFree(argv); } CEpgDataCap_BonDlg dlg; map<wstring, wstring>::iterator itr; dlg.SetIniMin(FALSE); dlg.SetIniView(TRUE); dlg.SetIniNW(TRUE); for( itr = cCmdUtil.m_CmdList.begin(); itr != cCmdUtil.m_CmdList.end(); itr++ ){ if( lstrcmpi(itr->first.c_str(), L"d") == 0 ){ dlg.SetInitBon(itr->second.c_str()); OutputDebugString(itr->second.c_str()); }else if( lstrcmpi(itr->first.c_str(), L"min") == 0 ){ dlg.SetIniMin(TRUE); }else if( lstrcmpi(itr->first.c_str(), L"noview") == 0 ){ dlg.SetIniView(FALSE); }else if( lstrcmpi(itr->first.c_str(), L"nonw") == 0 ){ dlg.SetIniNW(FALSE); }else if( lstrcmpi(itr->first.c_str(), L"nwudp") == 0 ){ dlg.SetIniNWUDP(TRUE); }else if( lstrcmpi(itr->first.c_str(), L"nwtcp") == 0 ){ dlg.SetIniNWTCP(TRUE); } } INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ダイアログが <OK> で消された時のコードを // 記述してください。 } else if (nResponse == IDCANCEL) { // TODO: ダイアログが <キャンセル> で消された時のコードを // 記述してください。 } // ダイアログは閉じられました。アプリケーションのメッセージ ポンプを開始しないで // アプリケーションを終了するために FALSE を返してください。 return FALSE; }
BOOL CEpgDataCap_BonApp::InitInstance() { // アプリケーション マニフェストが visual スタイルを有効にするために、 // ComCtl32.dll Version 6 以降の使用を指定する場合は、 // Windows XP に InitCommonControlsEx() が必要です。さもなければ、ウィンドウ作成はすべて失敗します。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // アプリケーションで使用するすべてのコモン コントロール クラスを含めるには、 // これを設定します。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); SetProcessShutdownParameters(0x300, 0); AfxEnableControlContainer(); // ダイアログにシェル ツリー ビューまたはシェル リスト ビュー コントロールが // 含まれている場合にシェル マネージャーを作成します。 CShellManager *pShellManager = new CShellManager; // 標準初期化 // これらの機能を使わずに最終的な実行可能ファイルの // サイズを縮小したい場合は、以下から不要な初期化 // ルーチンを削除してください。 // 設定が格納されているレジストリ キーを変更します。 // TODO: 会社名または組織名などの適切な文字列に // この文字列を変更してください。 SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); CCmdLineUtil cCmdUtil; ParseCommandLine(cCmdUtil); CEpgDataCap_BonDlg dlg; map<CString, CString>::iterator itr; dlg.SetIniMin(FALSE); dlg.SetIniView(TRUE); dlg.SetIniNW(TRUE); for( itr = cCmdUtil.m_CmdList.begin(); itr != cCmdUtil.m_CmdList.end(); itr++ ){ if( itr->first.CompareNoCase(L"d") == 0 ){ dlg.SetInitBon(itr->second); OutputDebugString(itr->second); }else if( itr->first.CompareNoCase(L"min") == 0 ){ dlg.SetIniMin(TRUE); }else if( itr->first.CompareNoCase(L"noview") == 0 ){ dlg.SetIniView(FALSE); }else if( itr->first.CompareNoCase(L"nonw") == 0 ){ dlg.SetIniNW(FALSE); }else if( itr->first.CompareNoCase(L"nwudp") == 0 ){ dlg.SetIniNWUDP(TRUE); }else if( itr->first.CompareNoCase(L"nwtcp") == 0 ){ dlg.SetIniNWTCP(TRUE); } } m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ダイアログが <OK> で消された時のコードを // 記述してください。 } else if (nResponse == IDCANCEL) { // TODO: ダイアログが <キャンセル> で消された時のコードを // 記述してください。 } // 上で作成されたシェル マネージャーを削除します。 if (pShellManager != NULL) { delete pShellManager; } // ダイアログは閉じられました。アプリケーションのメッセージ ポンプを開始しないで // アプリケーションを終了するために FALSE を返してください。 return FALSE; }