⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effectdlgsave.cpp

📁 WINCE SIMPLE mp3 Player
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -