📄 effectdlgsave.cpp
字号:
return;
for (int i = 0; i < nCount; i++) {
if (ListView_GetItemState(hwndLV, i, LVIS_SELECTED) == LVIS_SELECTED) {
ListView_GetItemText(hwndLV, i, 0, szName, MAX_PATH);
str.Load(IDS_FMT_DEL_PRESET);
wsprintf(szMsg, str, szName);
str.Load(IDS_TITLE_DEL_PRESET);
if (MessageBox(hwndDlg, szMsg, str, MB_ICONQUESTION | MB_OKCANCEL) == IDCANCEL)
return;
_tcscat(szPath, _T("\\"));
_tcscat(szPath, szName);
_tcscat(szPath, _T("."));
_tcscat(szPath, EFFECT_FILE_EXT);
if (DeleteFile(szPath))
ListView_DeleteItem(hwndLV, i);
return;
}
}
}
void CEffectDlg::SavePresetFile(LPTSTR pszFile, BOOL fEQ, BOOL fSurround, BOOL f3DChorus,
BOOL fReverb, BOOL fEcho, BOOL fBassBoost)
{
#ifdef _UNICODE
char sz[MAX_PATH * 2];
WideCharToMultiByte(CP_ACP, NULL, pszFile, -1, sz, MAX_PATH * 2, NULL, NULL);
FILE* fp = fopen(sz, "w");
#else
FILE* fp = fopen(pszFile, "w");
#endif
if (!fp)
return;
EFFECT effect;
EQUALIZER eq;
fprintf(fp, "[%s]\n", SECTION_GSPLAYER);
fprintf(fp, "%s=%d\n", KEY_EFFECT_VERSION, VALUE_VERSION);
if (fEQ) {
MAP_GetEqualizer(m_hMap, &eq);
fprintf(fp, "\n[%s]\n", SECTION_EQUALIZER);
fprintf(fp, "%s=%d\n", KEY_ENABLE, eq.fEnable);
fprintf(fp, "%s=%d\n", KEY_PREAMP, eq.preamp);
for (int i = 0; i < 10; i++)
fprintf(fp, "%d=%d\n", i, eq.data[i]);
}
if (fSurround) {
MAP_GetEffect(m_hMap, EFFECT_SURROUND, &effect);
fprintf(fp, "\n[%s]\n", SECTION_SURROUND);
fprintf(fp, "%s=%d\n", KEY_ENABLE, effect.fEnable);
fprintf(fp, "%s=%d\n", KEY_RATE, effect.nRate);
}
if (f3DChorus) {
MAP_GetEffect(m_hMap, EFFECT_3DCHORUS, &effect);
fprintf(fp, "\n[%s]\n", SECTION_3DCHORUS);
fprintf(fp, "%s=%d\n", KEY_ENABLE, effect.fEnable);
fprintf(fp, "%s=%d\n", KEY_RATE, effect.nRate);
}
if (fReverb) {
MAP_GetEffect(m_hMap, EFFECT_REVERB, &effect);
fprintf(fp, "\n[%s]\n", SECTION_REVERB);
fprintf(fp, "%s=%d\n", KEY_ENABLE, effect.fEnable);
fprintf(fp, "%s=%d\n", KEY_DELAY, effect.nDelay);
fprintf(fp, "%s=%d\n", KEY_RATE, effect.nRate);
}
if (fEcho) {
MAP_GetEffect(m_hMap, EFFECT_ECHO, &effect);
fprintf(fp, "\n[%s]\n", SECTION_ECHO);
fprintf(fp, "%s=%d\n", KEY_ENABLE, effect.fEnable);
fprintf(fp, "%s=%d\n", KEY_DELAY, effect.nDelay);
fprintf(fp, "%s=%d\n", KEY_RATE, effect.nRate);
}
if (fBassBoost) {
fprintf(fp, "\n[%s]\n", SECTION_BASSBOOST);
fprintf(fp, "%s=%d\n", KEY_RATE, MAP_GetBassBoostLevel(m_hMap));
}
fclose(fp);
}
void CEffectDlg::LoadPresetFile(LPTSTR pszFile)
{
#ifdef _UNICODE
char sz[MAX_PATH * 2];
WideCharToMultiByte(CP_ACP, NULL, pszFile, -1, sz, MAX_PATH * 2, NULL, NULL);
FILE* fp = fopen(sz, "r");
#else
FILE* fp = fopen(pszFile, "r");
#endif
if (!fp)
return;
int i;
EFFECT effect;
EQUALIZER eq;
TCHAR szBuf[MAX_PATH];
if (!GetKeyString(fp, SECTION_GSPLAYERW, KEY_EFFECT_VERSIONW, szBuf))
goto done;
if (_tcstol(szBuf, NULL, 10) != VALUE_VERSION)
goto done;
MAP_GetEqualizer(m_hMap, &eq);
if (GetKeyString(fp, SECTION_EQUALIZERW, KEY_ENABLEW, szBuf))
eq.fEnable = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_EQUALIZERW, KEY_PREAMPW, szBuf))
eq.preamp = _tcstol(szBuf, NULL, 10);
for (i = 0; i < 10; i++) {
TCHAR szKey[64];
wsprintf(szKey, _T("%d"), i);
if (GetKeyString(fp, SECTION_EQUALIZERW, szKey, szBuf))
eq.data[i] = _tcstol(szBuf, NULL, 10);
}
MAP_SetEqualizer(m_hMap, &eq);
MAP_GetEffect(m_hMap, EFFECT_SURROUND, &effect);
if (GetKeyString(fp, SECTION_SURROUNDW, KEY_ENABLEW, szBuf))
effect.fEnable = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_SURROUNDW, KEY_RATEW, szBuf))
effect.nRate = _tcstol(szBuf, NULL, 10);
MAP_SetEffect(m_hMap, EFFECT_SURROUND, &effect);
MAP_GetEffect(m_hMap, EFFECT_3DCHORUS, &effect);
if (GetKeyString(fp, SECTION_3DCHORUSW, KEY_ENABLEW, szBuf))
effect.fEnable = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_3DCHORUSW, KEY_RATEW, szBuf))
effect.nRate = _tcstol(szBuf, NULL, 10);
MAP_SetEffect(m_hMap, EFFECT_3DCHORUS, &effect);
MAP_GetEffect(m_hMap, EFFECT_REVERB, &effect);
if (GetKeyString(fp, SECTION_REVERBW, KEY_ENABLEW, szBuf))
effect.fEnable = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_REVERBW, KEY_DELAYW, szBuf))
effect.nDelay = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_REVERBW, KEY_RATEW, szBuf))
effect.nRate = _tcstol(szBuf, NULL, 10);
MAP_SetEffect(m_hMap, EFFECT_REVERB, &effect);
MAP_GetEffect(m_hMap, EFFECT_ECHO, &effect);
if (GetKeyString(fp, SECTION_ECHOW, KEY_ENABLEW, szBuf))
effect.fEnable = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_ECHOW, KEY_DELAYW, szBuf))
effect.nDelay = _tcstol(szBuf, NULL, 10);
if (GetKeyString(fp, SECTION_ECHOW, KEY_RATEW, szBuf))
effect.nRate = _tcstol(szBuf, NULL, 10);
MAP_SetEffect(m_hMap, EFFECT_ECHO, &effect);
i = MAP_GetBassBoostLevel(m_hMap);
if (GetKeyString(fp, SECTION_BASSBOOSTW, KEY_RATEW, szBuf))
i = _tcstol(szBuf, NULL, 10);
MAP_SetBassBoostLevel(m_hMap, i);
done:
fclose(fp);
}
static TCHAR s_invalid_chars[] = {
_T('\\'), _T('/'), _T(':'), _T(','), _T(';'), _T('*'), _T('?'), _T('\"'), _T('<'), _T('>'), _T('|'), NULL
};
BOOL CALLBACK CEffectDlg::PresetNameDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static CEffectDlg* pDlg;
switch (uMsg) {
case WM_INITDIALOG:
{
pDlg = (CEffectDlg*)lParam;
TCHAR szPath[MAX_PATH];
if (GetPresetDir(szPath))
SendMessage(GetDlgItem(hwndDlg, IDC_EDIT_NAME), EM_LIMITTEXT,
MAX_PATH - _tcslen(szPath) - _tcslen(EFFECT_FILE_EXT) - 3, 0);
if (_tcslen(pDlg->m_szNewName))
SetDlgItemText(hwndDlg, IDC_EDIT_NAME, pDlg->m_szNewName);
if (pDlg->m_fSaveParam[SAVE_PARAM_EQ])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_EQUALIZER), BM_SETCHECK, 1, 0);
if (pDlg->m_fSaveParam[SAVE_PARAM_SURROUND])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SURROUND), BM_SETCHECK, 1, 0);
if (pDlg->m_fSaveParam[SAVE_PARAM_3DCHORUS])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_3DCHORUS), BM_SETCHECK, 1, 0);
if (pDlg->m_fSaveParam[SAVE_PARAM_REVERB])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_REVERB), BM_SETCHECK, 1, 0);
if (pDlg->m_fSaveParam[SAVE_PARAM_ECHO])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_ECHO), BM_SETCHECK, 1, 0);
if (pDlg->m_fSaveParam[SAVE_PARAM_BASSBOOST])
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_BASSBOOST), BM_SETCHECK, 1, 0);
return TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK) {
GetDlgItemText(hwndDlg, IDC_EDIT_NAME, pDlg->m_szNewName, MAX_PATH);
if (_tcslen(pDlg->m_szNewName) == 0) {
SendMessage(GetDlgItem(hwndDlg, IDC_EDIT_NAME), EM_SETSEL, 0, -1);
SetFocus(GetDlgItem(hwndDlg, IDC_EDIT_NAME));
return TRUE;
}
for (int i = 0; s_invalid_chars[i]; i++) {
if (_tcschr(pDlg->m_szNewName, s_invalid_chars[i])) {
SendMessage(GetDlgItem(hwndDlg, IDC_EDIT_NAME), EM_SETSEL, 0, -1);
SetFocus(GetDlgItem(hwndDlg, IDC_EDIT_NAME));
return TRUE;
}
}
pDlg->m_fSaveParam[SAVE_PARAM_EQ] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_EQUALIZER), BM_GETCHECK, 0, 0);
pDlg->m_fSaveParam[SAVE_PARAM_SURROUND] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SURROUND), BM_GETCHECK, 0, 0);
pDlg->m_fSaveParam[SAVE_PARAM_3DCHORUS] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_3DCHORUS), BM_GETCHECK, 0, 0);
pDlg->m_fSaveParam[SAVE_PARAM_REVERB] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_REVERB), BM_GETCHECK, 0, 0);
pDlg->m_fSaveParam[SAVE_PARAM_ECHO] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_ECHO), BM_GETCHECK, 0, 0);
pDlg->m_fSaveParam[SAVE_PARAM_BASSBOOST] =
SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_BASSBOOST), BM_GETCHECK, 0, 0);
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
else if (LOWORD(wParam) == IDCANCEL) {
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
return FALSE;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -