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

📄 options.cpp

📁 PPC流行的播放软件gsplayer源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:

	m_Options.nOutputPrebuffer = n;

	m_Options.fFadeIn = SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_OUTPUT_FADE), BM_GETCHECK, 0, 0);
	m_Options.fScanMpegCompletely = 
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SCANCOMPLETELY), BM_GETCHECK, 0, 0);
	m_Options.fSuppressZeroSamples = SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_SUPZERO), BM_GETCHECK, 0, 0);
	m_Options.fAlwaysOpenDevice = SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_ALWAYSOPENDEV), BM_GETCHECK, 0, 0);
}

void COptions::DecoderPageOnDeltaPos(HWND hwndDlg, NM_UPDOWN* pNmud)
{
	TCHAR sz[32];
	if (pNmud->hdr.idFrom == IDC_SPIN_OUT_BUFF_LEN) {
		GetDlgItemText(hwndDlg, IDC_EDIT_OUT_BUFF_LEN, sz, 32);

		int n = _tcstol(sz, NULL, 10);
		if (pNmud->iDelta < 0)
			n = min(n + 50, OUTPUT_BUFF_MAX);
		else if (pNmud->iDelta > 0)
			n = max(n - 50, OUTPUT_BUFF_MIN);
		wsprintf(sz, _T("%d"), n);
		SetDlgItemText(hwndDlg, IDC_EDIT_OUT_BUFF_LEN, sz);
	}
	else if (pNmud->hdr.idFrom == IDC_SPIN_OUT_PREBUFF) {
		GetDlgItemText(hwndDlg, IDC_EDIT_OUT_PREBUFF, sz, 32);

		int n = _tcstol(sz, NULL, 10);
		if (pNmud->iDelta < 0)
			n = min(n + 5, OUTPUT_PREBUFF_MAX);
		else if (pNmud->iDelta > 0)
			n = max(n - 5, OUTPUT_PREBUFF_MIN);
		wsprintf(sz, _T("%d"), n);
		SetDlgItemText(hwndDlg, IDC_EDIT_OUT_PREBUFF, sz);
	}
}

BOOL CALLBACK COptions::StreamingPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static COptions* pOptions;
	switch (uMsg) {
	case WM_INITDIALOG:
		SetWindowLong(hwndDlg, DWL_MSGRESULT, FALSE);
		pOptions = (COptions*)((LPPROPSHEETPAGE)lParam)->lParam;
		pOptions->StreamingPageOnInitDialog(hwndDlg);
		return TRUE;
	case WM_NOTIFY:
		{
			NMHDR* pnmh = (NMHDR*)lParam; 
			if (pnmh->code == PSN_APPLY) {
				pOptions->StreamingPageOnOK(hwndDlg);
				return TRUE;
			}
			else if (pnmh->code == UDN_DELTAPOS) {
				pOptions->StreamingPageOnDeltaPos(hwndDlg, (NM_UPDOWN*)pnmh);
				return TRUE;
			}
			return FALSE;
		}
	case WM_PAINT:
		return DefDlgPaintProc(hwndDlg, wParam, lParam);
	case WM_CTLCOLORSTATIC:
		return DefDlgCtlColorStaticProc(hwndDlg, wParam, lParam);
	default:
		return FALSE;
	}
}

void COptions::StreamingPageOnInitDialog(HWND hwndDlg)
{
	TCHAR sz[MAX_URL];

	SendMessage(GetDlgItem(hwndDlg, IDC_EDIT_BUFF), EM_LIMITTEXT, 4, 0);
	SendMessage(GetDlgItem(hwndDlg, IDC_EDIT_PREBUFF), EM_LIMITTEXT, 4, 0);

	wsprintf(sz, _T("%d"), m_StreamingOptions.nBuf * 2);
	SetDlgItemText(hwndDlg, IDC_EDIT_BUFF, sz);
	wsprintf(sz, _T("%d"), m_StreamingOptions.nPreBuf * 2);
	SetDlgItemText(hwndDlg, IDC_EDIT_PREBUFF, sz);
	SetDlgItemText(hwndDlg, IDC_EDIT_PROXY, m_StreamingOptions.szProxy);

	if (m_StreamingOptions.fUseProxy)
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_PROXY), BM_SETCHECK, 1, 0);
}

void COptions::StreamingPageOnDeltaPos(HWND hwndDlg, NM_UPDOWN* pNmud)
{
	TCHAR sz[32];
	int nEditID = pNmud->hdr.idFrom == IDC_SPIN_BUFF ? IDC_EDIT_BUFF : IDC_EDIT_PREBUFF;
	GetDlgItemText(hwndDlg, nEditID, sz, 32);

	int n = _tcstol(sz, NULL, 10);
	if (pNmud->iDelta < 0)
		n = min(n + 2, STREAMING_BUFF_MAX);
	else if (pNmud->iDelta > 0)
		n = max(n - 2, STREAMING_BUFF_MIN);
	wsprintf(sz, _T("%d"), n);
	SetDlgItemText(hwndDlg, nEditID, sz);
}

void COptions::StreamingPageOnOK(HWND hwndDlg)
{
	TCHAR sz[MAX_URL];
	GetDlgItemText(hwndDlg, IDC_EDIT_BUFF, sz, MAX_URL);
	int n = _tcstol(sz, NULL, 10);
	if (n >= STREAMING_BUFF_MIN) {
		n = max(min(n, STREAMING_BUFF_MAX), STREAMING_BUFF_MIN);
		m_StreamingOptions.nBuf = n / 2;
	}
	GetDlgItemText(hwndDlg, IDC_EDIT_PREBUFF, sz, MAX_URL);
	n = _tcstol(sz, NULL, 10);
	if (n >= STREAMING_BUFF_MIN) {
		n = max(min(n, STREAMING_BUFF_MAX), STREAMING_BUFF_MIN);
		m_StreamingOptions.nPreBuf = n / 2;
	}
	GetDlgItemText(hwndDlg, IDC_EDIT_PROXY, m_StreamingOptions.szProxy, MAX_URL);
	m_StreamingOptions.fUseProxy = SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_PROXY), BM_GETCHECK, 0, 0);
}

BOOL CALLBACK COptions::SkinPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static COptions* pOptions;
	switch (uMsg) {
	case WM_INITDIALOG:
		SetWindowLong(hwndDlg, DWL_MSGRESULT, FALSE);
		pOptions = (COptions*)((LPPROPSHEETPAGE)lParam)->lParam;
		pOptions->SkinPageOnInitDialog(hwndDlg);
		return TRUE;
	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_BROWSE:
			pOptions->SkinPageOnBrowse(hwndDlg);
			return TRUE;
		}
		return FALSE;
	case WM_NOTIFY:
		{
			NMHDR* pnmh = (NMHDR*)lParam; 
			if (pnmh->code == PSN_APPLY) {
				pOptions->SkinPageOnOK(hwndDlg);
				return TRUE;
			}
			return FALSE;
		}
	case WM_PAINT:
		return DefDlgPaintProc(hwndDlg, wParam, lParam);
	case WM_CTLCOLORSTATIC:
		return DefDlgCtlColorStaticProc(hwndDlg, wParam, lParam);
	default:
		return FALSE;
	}
}

void COptions::SkinPageOnInitDialog(HWND hwndDlg)
{
	SetDlgItemText(hwndDlg, IDC_EDIT_FILE, m_szSkinFile);
}

void COptions::SkinPageOnBrowse(HWND hwndDlg)
{
	TCHAR szFile[MAX_PATH] = {0};
	CTempStr strTitle(IDS_TITLE_SKIN_FILE);
	CTempStr strFilter(IDS_FILTER_SKIN_FILE);

	OPENFILENAME ofn;
	memset(&(ofn), 0, sizeof(ofn));
	ofn.lStructSize	= sizeof(ofn);
	ofn.hwndOwner   = hwndDlg;
	ofn.lpstrFile   = szFile;
	ofn.nMaxFile    = MAX_PATH;	
	ofn.lpstrTitle  = strTitle;
	ofn.lpstrFilter = strFilter;
	ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
	ofn.lpstrInitialDir = m_szLastDir;
#ifdef _WIN32_WCE
	BOOL (*gsGetOpenFileName)(OPENFILENAME*) = NULL;
	HINSTANCE hInst = LoadLibrary(_T("gsgetfile.dll"));
	if (hInst) {
		(FARPROC&)gsGetOpenFileName = GetProcAddress(hInst, _T("gsGetOpenFileName"));
	}

	if (gsGetOpenFileName) {
		if (!gsGetOpenFileName(&ofn)) return;
	}
	else {
		if (!GetOpenFileName(&ofn)) return;
	}

	if (hInst) FreeLibrary(hInst);
#else
	if (!GetOpenFileName(&ofn)) return;
#endif

	SetDlgItemText(hwndDlg, IDC_EDIT_FILE, szFile);

	LPTSTR psz = _tcsrchr(szFile, _T('\\'));
	if (psz) *psz = NULL;
	_tcscpy(m_szLastDir, szFile);
}

void COptions::SkinPageOnOK(HWND hwndDlg)
{
	GetDlgItemText(hwndDlg, IDC_EDIT_FILE, m_szSkinFile, MAX_PATH);
}

BOOL CALLBACK COptions::AssociatePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static COptions* pOptions;
	switch (uMsg) {
	case WM_INITDIALOG:
		SetWindowLong(hwndDlg, DWL_MSGRESULT, FALSE);
		pOptions = (COptions*)((LPPROPSHEETPAGE)lParam)->lParam;
		pOptions->AssociatePageOnInitDialog(hwndDlg);
		return TRUE;
	case WM_NOTIFY:
		{
			NMHDR* pnmh = (NMHDR*)lParam; 
			if (pnmh->code == PSN_APPLY) {
				pOptions->AssociatePageOnOK(hwndDlg);
				return TRUE;
			}
			return FALSE;
		}
	case WM_PAINT:
		return DefDlgPaintProc(hwndDlg, wParam, lParam);
	case WM_CTLCOLORSTATIC:
		return DefDlgCtlColorStaticProc(hwndDlg, wParam, lParam);
	default:
		return FALSE;
	}
}

void COptions::AssociatePageOnInitDialog(HWND hwndDlg)
{
	int i;
	BOOL fAssociate = TRUE;

	// MPEG
	i = 0;
	while (s_szMpegFileExt[i][0] != NULL) {
		if (!IsAssociatedFile(s_szMpegFileExt[i], KEY_MPEGAUDIOFILE))
			fAssociate = FALSE;
		i++;
	}
	if (fAssociate)
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_MPG), BM_SETCHECK, 1, 0);
	
	// Ogg Vorbis
	fAssociate = TRUE;
	i = 0;
	while (s_szOggFileExt[i][0] != NULL) {
		if (!IsAssociatedFile(s_szOggFileExt[i], KEY_OGGVORBISFILE))
			fAssociate = FALSE;
		i++;
	}
	if (fAssociate)
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_OGG), BM_SETCHECK, 1, 0);

	// Wave
	fAssociate = TRUE;
	i = 0;
	while (s_szWavFileExt[i][0] != NULL) {
		if (!IsAssociatedFile(s_szWavFileExt[i], KEY_WAVEFILE))
			fAssociate = FALSE;
		i++;
	}
	if (fAssociate)
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_WAV), BM_SETCHECK, 1, 0);

	// Playlist
	fAssociate = TRUE;
	i = 0;
	while (s_szPlayListExt[i][0] != NULL) {
		if (!IsAssociatedFile(s_szPlayListExt[i], KEY_PLAYLIST))
			fAssociate = FALSE;
		i++;
	}
	if (fAssociate)
		SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_PLS), BM_SETCHECK, 1, 0);
}

void COptions::AssociatePageOnOK(HWND hwndDlg)
{
	int i;

	// MPEG
	i = 0;
	while (s_szMpegFileExt[i][0] != NULL) {
		if (IsAssociatedFile(s_szMpegFileExt[i], KEY_MPEGAUDIOFILE)) {
			if (!SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_MPG), BM_GETCHECK, 0, 0))
				UnassociateFile(s_szMpegFileExt[i], KEY_MPEGAUDIOFILE);
		}
		else {
			if (SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_MPG), BM_GETCHECK, 0, 0))
				AssociateFile(s_szMpegFileExt[i], KEY_MPEGAUDIOFILE, NAME_MPEGAUDIOFILE);
		}
		i++;
	}	

	// Ogg Vorbis
	i = 0;
	while (s_szOggFileExt[i][0] != NULL) {
		if (IsAssociatedFile(s_szOggFileExt[i], KEY_OGGVORBISFILE)) {
			if (!SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_OGG), BM_GETCHECK, 0, 0))
				UnassociateFile(s_szOggFileExt[i], KEY_OGGVORBISFILE);
		}
		else {
			if (SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_OGG), BM_GETCHECK, 0, 0))
				AssociateFile(s_szOggFileExt[i], KEY_OGGVORBISFILE, NAME_OGGVORBISFILE);
		}
		i++;
	}

	// Wave
	i = 0;
	while (s_szWavFileExt[i][0] != NULL) {
		if (IsAssociatedFile(s_szWavFileExt[i], KEY_WAVEFILE)) {
			if (!SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_WAV), BM_GETCHECK, 0, 0))
				UnassociateFile(s_szWavFileExt[i], KEY_WAVEFILE);
		}
		else {
			if (SendMessage(GetDlgItem(hwndDlg, IDC_CHECK_WAV), BM_GETCHECK, 0, 0))
				AssociateFile(s_szWavFileExt[i], KEY_WAVEFILE, NAME_WAVEFILE);
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -