INT_PTR CGeneralOptions::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { CAppMain &App=GetAppClass(); ::SendDlgItemMessage(hDlg,IDC_OPTIONS_DRIVERDIRECTORY,EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_OPTIONS_DRIVERDIRECTORY,m_BonDriverDirectory.c_str()); // BonDriver ::CheckRadioButton(hDlg,IDC_OPTIONS_DEFAULTDRIVER_NONE, IDC_OPTIONS_DEFAULTDRIVER_CUSTOM, (int)m_DefaultDriverType+IDC_OPTIONS_DEFAULTDRIVER_NONE); EnableDlgItems(hDlg,IDC_OPTIONS_DEFAULTDRIVER, IDC_OPTIONS_DEFAULTDRIVER_BROWSE, m_DefaultDriverType==DEFAULT_DRIVER_CUSTOM); const CDriverManager &DriverManager=App.DriverManager; DlgComboBox_LimitText(hDlg,IDC_OPTIONS_DEFAULTDRIVER,MAX_PATH-1); for (int i=0;i<DriverManager.NumDrivers();i++) { DlgComboBox_AddString(hDlg,IDC_OPTIONS_DEFAULTDRIVER, DriverManager.GetDriverInfo(i)->GetFileName()); } ::SetDlgItemText(hDlg,IDC_OPTIONS_DEFAULTDRIVER,m_DefaultBonDriverName.c_str()); DlgCheckBox_Check(hDlg,IDC_OPTIONS_RESIDENT,m_fResident); DlgCheckBox_Check(hDlg,IDC_OPTIONS_KEEPSINGLETASK,m_fKeepSingleTask); DlgCheckBox_Check(hDlg,IDC_OPTIONS_STANDALONEPROGRAMGUIDE,m_fStandaloneProgramGuide); DlgCheckBox_Check(hDlg,IDC_OPTIONS_ENABLE1SEGFALLBACK,m_fEnable1SegFallback); if (Util::OS::IsWindows7OrLater()) { DlgCheckBox_Check(hDlg,IDC_OPTIONS_USEUNIQUEAPPID, App.TaskbarOptions.GetUseUniqueAppID()); DlgCheckBox_Check(hDlg,IDC_OPTIONS_ENABLEJUMPLIST, App.TaskbarOptions.GetEnableJumpList()); DlgCheckBox_Check(hDlg,IDC_OPTIONS_JUMPLISTKEEPSINGLETASK, App.TaskbarOptions.GetJumpListKeepSingleTask()); EnableDlgItem(hDlg,IDC_OPTIONS_JUMPLISTKEEPSINGLETASK, App.TaskbarOptions.GetEnableJumpList()); } else { EnableDlgItems(hDlg, IDC_OPTIONS_ENABLEJUMPLIST, IDC_OPTIONS_USEUNIQUEAPPID, false); } } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_OPTIONS_DRIVERDIRECTORY_BROWSE: { TCHAR szDirectory[MAX_PATH]; if (::GetDlgItemText(hDlg,IDC_OPTIONS_DRIVERDIRECTORY,szDirectory,lengthof(szDirectory))>0) { if (::PathIsRelative(szDirectory)) { TCHAR szTemp[MAX_PATH]; GetAppClass().GetAppDirectory(szTemp); ::PathAppend(szTemp,szDirectory); ::PathCanonicalize(szDirectory,szTemp); } } else { GetAppClass().GetAppDirectory(szDirectory); } if (BrowseFolderDialog(hDlg,szDirectory,TEXT("BonDriver の検索フォルダを選択してください。"))) ::SetDlgItemText(hDlg,IDC_OPTIONS_DRIVERDIRECTORY,szDirectory); } return TRUE; case IDC_OPTIONS_DEFAULTDRIVER_NONE: case IDC_OPTIONS_DEFAULTDRIVER_LAST: case IDC_OPTIONS_DEFAULTDRIVER_CUSTOM: EnableDlgItemsSyncCheckBox(hDlg,IDC_OPTIONS_DEFAULTDRIVER, IDC_OPTIONS_DEFAULTDRIVER_BROWSE, IDC_OPTIONS_DEFAULTDRIVER_CUSTOM); return TRUE; case IDC_OPTIONS_DEFAULTDRIVER_BROWSE: { OPENFILENAME ofn; TCHAR szFileName[MAX_PATH],szInitDir[MAX_PATH]; CFilePath FilePath; ::GetDlgItemText(hDlg,IDC_OPTIONS_DEFAULTDRIVER,szFileName,lengthof(szFileName)); FilePath.SetPath(szFileName); if (FilePath.GetDirectory(szInitDir)) { ::lstrcpy(szFileName,FilePath.GetFileName()); } else { GetAppClass().GetAppDirectory(szInitDir); } InitOpenFileName(&ofn); ofn.hwndOwner=hDlg; ofn.lpstrFilter= TEXT("BonDriver(BonDriver*.dll)\0BonDriver*.dll\0") TEXT("すべてのファイル\0*.*\0"); ofn.lpstrFile=szFileName; ofn.nMaxFile=lengthof(szFileName); ofn.lpstrInitialDir=szInitDir; ofn.lpstrTitle=TEXT("BonDriverの選択"); ofn.Flags=OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER; if (FileOpenDialog(&ofn)) ::SetDlgItemText(hDlg,IDC_OPTIONS_DEFAULTDRIVER,szFileName); } return TRUE; case IDC_OPTIONS_ENABLEJUMPLIST: EnableDlgItemSyncCheckBox(hDlg, IDC_OPTIONS_JUMPLISTKEEPSINGLETASK, IDC_OPTIONS_ENABLEJUMPLIST); return TRUE; } return TRUE; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { TCHAR szDirectory[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_OPTIONS_DRIVERDIRECTORY, szDirectory,lengthof(szDirectory)); m_BonDriverDirectory=szDirectory; m_DefaultDriverType=(DefaultDriverType) (GetCheckedRadioButton(hDlg,IDC_OPTIONS_DEFAULTDRIVER_NONE, IDC_OPTIONS_DEFAULTDRIVER_CUSTOM)- IDC_OPTIONS_DEFAULTDRIVER_NONE); TCHAR szDefaultBonDriver[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_OPTIONS_DEFAULTDRIVER, szDefaultBonDriver,lengthof(szDefaultBonDriver)); m_DefaultBonDriverName=szDefaultBonDriver; bool fResident=DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_RESIDENT); if (fResident!=m_fResident) { m_fResident=fResident; SetUpdateFlag(UPDATE_RESIDENT); } m_fKeepSingleTask= DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_KEEPSINGLETASK); m_fStandaloneProgramGuide= DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_STANDALONEPROGRAMGUIDE); bool fEnable1SegFallback= DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_ENABLE1SEGFALLBACK); if (fEnable1SegFallback!=m_fEnable1SegFallback) { m_fEnable1SegFallback=fEnable1SegFallback; SetUpdateFlag(UPDATE_1SEGFALLBACK); } if (Util::OS::IsWindows7OrLater()) { CTaskbarOptions &TaskbarOptions=GetAppClass().TaskbarOptions; TaskbarOptions.SetUseUniqueAppID( DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_USEUNIQUEAPPID)); TaskbarOptions.SetEnableJumpList( DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_ENABLEJUMPLIST)); TaskbarOptions.SetJumpListKeepSingleTask( DlgCheckBox_IsChecked(hDlg,IDC_OPTIONS_JUMPLISTKEEPSINGLETASK)); TaskbarOptions.SetChanged(); } m_fChanged=true; } return TRUE; } break; } return FALSE; }
// 設定ダイアログプロシージャ INT_PTR CALLBACK CDiskRelay::SettingsDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { static const LPCTSTR PROP_NAME=TEXT("ABDBEFF3-CB03-459F-9D44-CE65377C7792"); switch (uMsg) { case WM_INITDIALOG: { CDiskRelay *pThis=reinterpret_cast<CDiskRelay*>(lParam); ::SetProp(hDlg,PROP_NAME,pThis); // デフォルトの録画フォルダを取得する TCHAR szDefaultFolder[MAX_PATH]; if (pThis->m_pApp->GetSetting(L"RecordFolder",szDefaultFolder,MAX_PATH)>0) ::SetDlgItemText(hDlg,IDC_SETTINGS_DEFAULTFOLDER,szDefaultFolder); for (int i=0;i<NUM_SPARE_FOLDERS;i++) { ::SendDlgItemMessage(hDlg,IDC_SETTINGS_FOLDER1+i*3,EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_SETTINGS_FOLDER1+i*3,pThis->m_szSpareFolder[i]); } ::SetDlgItemInt(hDlg,IDC_SETTINGS_LOWSPACE,pThis->m_LowFreeSpace,FALSE); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SETTINGS_FOLDER1_BROWSE: case IDC_SETTINGS_FOLDER2_BROWSE: case IDC_SETTINGS_FOLDER3_BROWSE: { int EditID=LOWORD(wParam)-1; TCHAR szFolder[MAX_PATH]; ::GetDlgItemText(hDlg,EditID,szFolder,MAX_PATH); if (BrowseFolderDialog(hDlg,szFolder,TEXT("予備のフォルダを選択してください"))) { ::SetDlgItemText(hDlg,EditID,szFolder); } } return TRUE; case IDOK: { CDiskRelay *pThis=static_cast<CDiskRelay*>(::GetProp(hDlg,PROP_NAME)); // フォルダがあるかチェックする for (int i=0;i<NUM_SPARE_FOLDERS;i++) { TCHAR szFolder[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_SETTINGS_FOLDER1+i*3,szFolder,MAX_PATH); if (szFolder[0]!='\0' && !::PathIsDirectory(szFolder)) { TCHAR szMessage[MAX_PATH+80]; ::wsprintf(szMessage, TEXT("フォルダ \"%s\" がありません。\n作成しますか?"), szFolder); switch (::MessageBox(hDlg,szMessage, TEXT("フォルダ作成の確認"), MB_YESNOCANCEL | MB_ICONQUESTION)) { case IDYES: { int Result=::SHCreateDirectoryEx(hDlg,szFolder,NULL); if (Result!=ERROR_SUCCESS && Result!=ERROR_ALREADY_EXISTS) { ::wsprintf(szMessage, TEXT("フォルダ \"%s\" が作成できません。"), szFolder); ::MessageBox(hDlg,szMessage,NULL, MB_OK | MB_ICONEXCLAMATION); return TRUE; } } break; case IDNO: break; default: return TRUE; } } } for (int i=0;i<NUM_SPARE_FOLDERS;i++) { ::GetDlgItemText(hDlg,IDC_SETTINGS_FOLDER1+i*3, pThis->m_szSpareFolder[i],MAX_PATH); } pThis->m_LowFreeSpace= ::GetDlgItemInt(hDlg,IDC_SETTINGS_LOWSPACE,NULL,FALSE); pThis->SaveSettings(); } case IDCANCEL: ::EndDialog(hDlg,LOWORD(wParam)); return TRUE; } return TRUE; case WM_NCDESTROY: ::RemoveProp(hDlg,PROP_NAME); return TRUE; } return FALSE; }
INT_PTR CEpgOptions::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { CLogoManager &LogoManager=GetAppClass().LogoManager; DlgCheckBox_Check(hDlg,IDC_EPGOPTIONS_SAVEEPGFILE,m_fSaveEpgFile); ::EnableDlgItems(hDlg,IDC_EPGOPTIONS_EPGFILENAME_LABEL, IDC_EPGOPTIONS_EPGFILENAME_BROWSE,m_fSaveEpgFile); ::SendDlgItemMessage(hDlg,IDC_EPGOPTIONS_EPGFILENAME, EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGFILENAME,m_szEpgFileName); DlgCheckBox_Check(hDlg,IDC_EPGOPTIONS_UPDATEWHENSTANDBY,m_fUpdateWhenStandby); DlgCheckBox_Check(hDlg,IDC_EPGOPTIONS_UPDATEBSEXTENDED,m_fUpdateBSExtended); DlgCheckBox_Check(hDlg,IDC_EPGOPTIONS_UPDATECSEXTENDED,m_fUpdateCSExtended); DlgCheckBox_Check(hDlg,IDC_EPGOPTIONS_USEEPGDATA,m_fUseEDCBData); ::SendDlgItemMessage(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER,EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER,m_szEDCBDataFolder); EnableDlgItems(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER_LABEL, IDC_EPGOPTIONS_EPGDATAFOLDER_BROWSE, m_fUseEDCBData); DlgCheckBox_Check(hDlg,IDC_LOGOOPTIONS_SAVEDATA,m_fSaveLogoFile); ::SendDlgItemMessage(hDlg,IDC_LOGOOPTIONS_DATAFILENAME,EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_LOGOOPTIONS_DATAFILENAME,m_szLogoFileName); EnableDlgItems(hDlg,IDC_LOGOOPTIONS_DATAFILENAME_LABEL, IDC_LOGOOPTIONS_DATAFILENAME_BROWSE, m_fSaveLogoFile); DlgCheckBox_Check(hDlg,IDC_LOGOOPTIONS_SAVERAWLOGO,LogoManager.GetSaveLogo()); DlgCheckBox_Check(hDlg,IDC_LOGOOPTIONS_SAVEBMPLOGO,LogoManager.GetSaveLogoBmp()); ::SendDlgItemMessage(hDlg,IDC_LOGOOPTIONS_LOGOFOLDER,EM_LIMITTEXT,MAX_PATH-1,0); ::SetDlgItemText(hDlg,IDC_LOGOOPTIONS_LOGOFOLDER,LogoManager.GetLogoDirectory()); m_CurEventInfoFont=m_EventInfoFont; TVTest::StyleUtil::SetFontInfoItem(hDlg,IDC_EVENTINFOOPTIONS_FONT_INFO,m_CurEventInfoFont); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_EPGOPTIONS_SAVEEPGFILE: EnableDlgItemsSyncCheckBox(hDlg, IDC_EPGOPTIONS_EPGFILENAME_LABEL, IDC_EPGOPTIONS_EPGFILENAME_BROWSE, IDC_EPGOPTIONS_SAVEEPGFILE); return TRUE; case IDC_EPGOPTIONS_EPGFILENAME_BROWSE: { OPENFILENAME ofn; TCHAR szFileName[MAX_PATH],szInitialDir[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGFILENAME, szFileName,lengthof(szFileName)); ofn.lStructSize=sizeof(OPENFILENAME); ofn.hwndOwner=hDlg; ofn.lpstrFilter=TEXT("すべてのファイル\0*.*\0"); ofn.lpstrCustomFilter=NULL; ofn.nFilterIndex=1; ofn.lpstrFile=szFileName; ofn.nMaxFile=lengthof(szFileName); ofn.lpstrFileTitle=NULL; if (szFileName[0]=='\0' || ::PathIsFileSpec(szFileName)) { ::GetModuleFileName(NULL,szInitialDir,lengthof(szInitialDir)); ::PathRemoveFileSpec(szInitialDir); ofn.lpstrInitialDir=szInitialDir; } else ofn.lpstrInitialDir=NULL; ofn.lpstrTitle=TEXT("EPGファイル名"); ofn.Flags=OFN_EXPLORER | OFN_HIDEREADONLY; ofn.lpstrDefExt=NULL; #if _WIN32_WINNT>=0x500 ofn.pvReserved=NULL; ofn.dwReserved=0; ofn.FlagsEx=0; #endif if (FileOpenDialog(&ofn)) ::SetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGFILENAME,szFileName); } return TRUE; case IDC_EPGOPTIONS_USEEPGDATA: EnableDlgItemsSyncCheckBox(hDlg, IDC_EPGOPTIONS_EPGDATAFOLDER_LABEL, IDC_EPGOPTIONS_EPGDATAFOLDER_BROWSE, IDC_EPGOPTIONS_USEEPGDATA); return TRUE; case IDC_EPGOPTIONS_EPGDATAFOLDER_BROWSE: { TCHAR szFolder[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER,szFolder,lengthof(szFolder)); if (BrowseFolderDialog(hDlg,szFolder,TEXT("EPGデータのフォルダ"))) ::SetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER,szFolder); } return TRUE; case IDC_LOGOOPTIONS_SAVEDATA: EnableDlgItemsSyncCheckBox(hDlg, IDC_LOGOOPTIONS_DATAFILENAME_LABEL, IDC_LOGOOPTIONS_DATAFILENAME_BROWSE, IDC_LOGOOPTIONS_SAVEDATA); return TRUE; case IDC_LOGOOPTIONS_DATAFILENAME_BROWSE: { OPENFILENAME ofn; TCHAR szFileName[MAX_PATH],szInitialDir[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_LOGOOPTIONS_DATAFILENAME,szFileName,lengthof(szFileName)); ofn.lStructSize=sizeof(OPENFILENAME); ofn.hwndOwner=hDlg; ofn.lpstrFilter=TEXT("すべてのファイル\0*.*\0"); ofn.lpstrCustomFilter=NULL; ofn.nFilterIndex=1; ofn.lpstrFile=szFileName; ofn.nMaxFile=lengthof(szFileName); ofn.lpstrFileTitle=NULL; if (szFileName[0]=='\0' || ::PathIsFileSpec(szFileName)) { ::GetModuleFileName(NULL,szInitialDir,lengthof(szInitialDir)); ::PathRemoveFileSpec(szInitialDir); ofn.lpstrInitialDir=szInitialDir; } else ofn.lpstrInitialDir=NULL; ofn.lpstrTitle=TEXT("ロゴファイル名"); ofn.Flags=OFN_EXPLORER | OFN_HIDEREADONLY; ofn.lpstrDefExt=NULL; #if _WIN32_WINNT>=0x500 ofn.pvReserved=NULL; ofn.dwReserved=0; ofn.FlagsEx=0; #endif if (FileOpenDialog(&ofn)) ::SetDlgItemText(hDlg,IDC_LOGOOPTIONS_DATAFILENAME,szFileName); } return TRUE; case IDC_LOGOOPTIONS_LOGOFOLDER_BROWSE: { TCHAR szFolder[MAX_PATH]; ::GetDlgItemText(hDlg,IDC_LOGOOPTIONS_LOGOFOLDER,szFolder,lengthof(szFolder)); if (BrowseFolderDialog(hDlg,szFolder,TEXT("ロゴのフォルダ"))) ::SetDlgItemText(hDlg,IDC_LOGOOPTIONS_LOGOFOLDER,szFolder); } return TRUE; case IDC_EVENTINFOOPTIONS_FONT_CHOOSE: if (TVTest::StyleUtil::ChooseStyleFont(hDlg,&m_CurEventInfoFont)) TVTest::StyleUtil::SetFontInfoItem(hDlg,IDC_EVENTINFOOPTIONS_FONT_INFO,m_CurEventInfoFont); return TRUE; } return TRUE; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { CLogoManager &LogoManager=GetAppClass().LogoManager; TCHAR szPath[MAX_PATH]; m_fSaveEpgFile= DlgCheckBox_IsChecked(hDlg,IDC_EPGOPTIONS_SAVEEPGFILE); ::GetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGFILENAME, m_szEpgFileName,lengthof(m_szEpgFileName)); m_fUpdateWhenStandby= DlgCheckBox_IsChecked(hDlg,IDC_EPGOPTIONS_UPDATEWHENSTANDBY); m_fUpdateBSExtended= DlgCheckBox_IsChecked(hDlg,IDC_EPGOPTIONS_UPDATEBSEXTENDED); m_fUpdateCSExtended= DlgCheckBox_IsChecked(hDlg,IDC_EPGOPTIONS_UPDATECSEXTENDED); bool fUseEpgData= DlgCheckBox_IsChecked(hDlg,IDC_EPGOPTIONS_USEEPGDATA); ::GetDlgItemText(hDlg,IDC_EPGOPTIONS_EPGDATAFOLDER, m_szEDCBDataFolder,lengthof(m_szEDCBDataFolder)); if (!m_fUseEDCBData && fUseEpgData) { m_fUseEDCBData=fUseEpgData; AsyncLoadEDCBData(); } m_fUseEDCBData=fUseEpgData; m_fSaveLogoFile=DlgCheckBox_IsChecked(hDlg,IDC_LOGOOPTIONS_SAVEDATA); ::GetDlgItemText(hDlg,IDC_LOGOOPTIONS_DATAFILENAME, m_szLogoFileName,lengthof(m_szLogoFileName)); LogoManager.SetSaveLogo(DlgCheckBox_IsChecked(hDlg,IDC_LOGOOPTIONS_SAVERAWLOGO)); LogoManager.SetSaveLogoBmp(DlgCheckBox_IsChecked(hDlg,IDC_LOGOOPTIONS_SAVEBMPLOGO)); ::GetDlgItemText(hDlg,IDC_LOGOOPTIONS_LOGOFOLDER,szPath,lengthof(szPath)); LogoManager.SetLogoDirectory(szPath); if (m_EventInfoFont!=m_CurEventInfoFont) { m_EventInfoFont=m_CurEventInfoFont; SetGeneralUpdateFlag(UPDATE_GENERAL_EVENTINFOFONT); } m_fChanged=true; } break; } break; } return FALSE; }