📄 options.cpp
字号:
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 + -