📄 optionsdlg.cpp
字号:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_WND,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
case 1:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_BARS,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
case 2:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_PEAKS,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
case 3:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_GRID,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
case 4:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_ADV,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
case 5:
Plugin.hCurDlg = CreateDialog((HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE),(LPCTSTR)IDD_CONF_SKIN,hTab,ChildDlgProc);
ShowWindow(Plugin.hCurDlg,SW_SHOW);
break;
default:
break;
}
return true;
}
void OnDestroyTabSec(int nID)
{
switch(nID) {
case 0:
g_Settings.bSaveWndPos = GetCheckState(Plugin.hCurDlg,IDC_WND_SAVEPOS);
g_Settings.bDoubleSize = GetCheckState(Plugin.hCurDlg,IDC_WND_DBLSIZE);
g_Settings.bDimTitleBar = GetCheckState(Plugin.hCurDlg,IDC_WND_DIMTITLE);
g_Settings.bSnapWindow = GetCheckState(Plugin.hCurDlg,IDC_WND_SNAP);
g_Settings.bWinampCursor = GetCheckState(Plugin.hCurDlg,IDC_WND_CURSOR);
g_Settings.ulWindowSnap = GetEditNum(Plugin.hCurDlg,IDC_WND_SNAPDST);
break;
case 1:
g_Settings.bWantBars = GetCheckState(Plugin.hCurDlg,IDC_BARS_ENABLE);
g_Settings.bFilter = GetCheckState(Plugin.hCurDlg,IDC_BARS_FILTER);
g_Settings.bRemap = GetCheckState(Plugin.hCurDlg,IDC_BARS_LEVEL);
g_Settings.uchBarWidth = GetSliderPos(Plugin.hCurDlg,IDC_BARS_SWIDTH);
g_Settings.uchBarHorzGap = GetSliderPos(Plugin.hCurDlg,IDC_BARS_SHORZ);
// recalculate slider scale
if(g_Settings.uchBarHorzGap >= (g_Settings.uchBarWidth-1)) g_Settings.uchBarHorzGap = (g_Settings.uchBarWidth -1);
g_Settings.uchBarVertGap = GetSliderPos(Plugin.hCurDlg,IDC_BARS_SVERT);
g_Settings.uchMaxDecrease = GetSliderPos(Plugin.hCurDlg,IDC_BARS_SFALLOFF);
g_Settings.uchMaxIncrease = GetSliderPos(Plugin.hCurDlg,IDC_BARS_SGAIN);
if(!GetCheckState(Plugin.hCurDlg,IDC_STYLE_NORMAL)) {
if(!GetCheckState(Plugin.hCurDlg,IDC_STYLE_FIRE)) {
g_Settings.uchBarStyle = 2;
}
else
g_Settings.uchBarStyle = 1;
}
else
g_Settings.uchBarStyle = 0;
break;
case 2:
g_Settings.bWantPeaks = GetCheckState(Plugin.hCurDlg,IDC_PEAK_ENABLE);
g_Settings.uchPeakDelay = GetEditNum(Plugin.hCurDlg,IDC_PEAK_EDELAY);
g_Settings.uchPeakDrop = GetEditNum(Plugin.hCurDlg,IDC_PEAK_EDROP);
break;
case 3:
g_Settings.bWantGrid = GetCheckState(Plugin.hCurDlg,IDC_GRID_ENABLE);
g_Settings.uchGridWidth = GetSliderPos(Plugin.hCurDlg,IDC_GRID_SWIDTH);
g_Settings.uchGridVertGap = GetSliderPos(Plugin.hCurDlg,IDC_GRID_SVERT);
g_Settings.uchGridHorzGap = GetSliderPos(Plugin.hCurDlg,IDC_GRID_SHORZ);
if(g_Settings.uchGridHorzGap >= (g_Settings.uchGridWidth-1)) g_Settings.uchGridHorzGap = (g_Settings.uchGridWidth -1);
break;
case 4:
g_Settings.nLatency = GetSliderPos(Plugin.hCurDlg,IDC_ADV_LATENCY);
g_Settings.nDelayMS = (1000/GetSliderPos(Plugin.hCurDlg,IDC_ADV_FRATE));
break;
case 5:
if(!Plugin.hMemDC) {
DeleteObject(Plugin.hBmpSkin);
Plugin.hBmpSkin = NULL;
}
break;
default:
break;
}
}
void LoadPageSettings(HWND hDlg, int nID)
{
switch(nID) {
case 0:
CheckCheckBox(hDlg,IDC_WND_SAVEPOS,g_Settings.bSaveWndPos);
CheckCheckBox(hDlg,IDC_WND_DBLSIZE,g_Settings.bDoubleSize);
CheckCheckBox(hDlg,IDC_WND_DIMTITLE,g_Settings.bDimTitleBar);
CheckCheckBox(hDlg,IDC_WND_SNAP,g_Settings.bSnapWindow);
CheckCheckBox(hDlg,IDC_WND_CURSOR,g_Settings.bWinampCursor);
SetEditNumber(hDlg,IDC_WND_SNAPDST,g_Settings.ulWindowSnap);
break;
case 1:
CheckCheckBox(hDlg,IDC_BARS_ENABLE,g_Settings.bWantBars);
CheckCheckBox(hDlg,IDC_BARS_FILTER,g_Settings.bFilter);
CheckCheckBox(hDlg,IDC_BARS_LEVEL,g_Settings.bRemap);
SetSliderParms(hDlg,IDC_BARS_SWIDTH,1,128,g_Settings.uchBarWidth);
SetSliderParms(hDlg,IDC_BARS_SHORZ,0,255 - (255 - (g_Settings.uchBarWidth-1)),g_Settings.uchBarHorzGap);
SetSliderParms(hDlg,IDC_BARS_SVERT,0,16,g_Settings.uchBarVertGap);
SetSliderParms(hDlg,IDC_BARS_SFALLOFF,1,255,g_Settings.uchMaxDecrease);
SetSliderParms(hDlg,IDC_BARS_SGAIN,1,255,g_Settings.uchMaxIncrease);
switch(g_Settings.uchBarStyle) {
case 0:
CheckCheckBox(hDlg,IDC_STYLE_NORMAL,true);
break;
case 1:
CheckCheckBox(hDlg,IDC_STYLE_FIRE,true);
break;
case 2:
CheckCheckBox(hDlg,IDC_STYLE_LINE,true);
break;
default:
CheckCheckBox(hDlg,IDC_STYLE_NORMAL,true);
break;
}
break;
case 2:
CheckCheckBox(hDlg,IDC_PEAK_ENABLE,g_Settings.bWantPeaks);
SetEditNumber(hDlg,IDC_PEAK_EDELAY,g_Settings.uchPeakDelay);
SetEditNumber(hDlg,IDC_PEAK_EDROP,g_Settings.uchPeakDrop);
break;
case 3:
CheckCheckBox(hDlg,IDC_GRID_ENABLE,g_Settings.bWantGrid);
SetSliderParms(hDlg,IDC_GRID_SWIDTH,2,127,g_Settings.uchGridWidth);
SetSliderParms(hDlg,IDC_GRID_SVERT,0,16,g_Settings.uchGridVertGap);
SetSliderParms(hDlg,IDC_GRID_SHORZ,0,255 - (255 - (g_Settings.uchGridWidth-1)),g_Settings.uchGridHorzGap);
break;
case 4:
SetSliderParms(hDlg,IDC_ADV_LATENCY,10,100,g_Settings.nLatency);
SetSliderParms(hDlg,IDC_ADV_FRATE,1,100,1000/g_pMod->delayMs);
break;
case 5:
if(!Plugin.hBmpSkin) {
LoadSkin();
Plugin.hMemDC = NULL;
}
PaintCurrentSkinToDialog(hDlg);
break;
default:
break;
}
}
int GetSliderPos(HWND hDlg, int nID)
{
return (int) SendDlgItemMessage(hDlg,nID,TBM_GETPOS,0,0);
}
int GetEditNum(HWND hDlg, int nID)
{
long l = SendDlgItemMessage(hDlg,nID,WM_GETTEXTLENGTH,0,0);
char* szStr = new char[l+1];
SendDlgItemMessage(hDlg,nID,WM_GETTEXT,l+1,(long)szStr);
int i = atoi(szStr);
delete[] szStr;
return i;
}
bool GetCheckState(HWND hDlg, int nID)
{
long l = SendDlgItemMessage(Plugin.hCurDlg,nID,BM_GETCHECK,0,0);
if(l==BST_CHECKED)
return true;
else
return false;
}
bool CheckCheckBox(HWND hDlg, int nID, bool bCheck)
{
if(bCheck)
return SendDlgItemMessage(hDlg,nID,BM_SETCHECK,BST_CHECKED,0)!=0;
else
return SendDlgItemMessage(hDlg,nID,BM_SETCHECK,BST_UNCHECKED,0)!=0;
}
bool SetEditNumber(HWND hDlg, int nID, int nNum)
{
char* szStr= new char[256];
itoa(nNum,szStr,10);
SendDlgItemMessage(hDlg,nID,WM_SETTEXT,0,(long)szStr);
delete[] szStr;
return true;
}
bool SetSliderParms(HWND hDlg, int nID, int nMin, int nMax, int nPos)
{
SendDlgItemMessage(hDlg,nID,TBM_SETRANGE,TRUE,MAKELONG(nMin,nMax));
SendDlgItemMessage(hDlg,nID,TBM_SETPOS,TRUE,(long)nPos);
return true;
}
void tabAddPage(HWND hDlg, int nID, int nIndex, const char* lpText)
{
TCITEM ItemData;
ItemData.mask = TCIF_TEXT;
ItemData.pszText = const_cast<char*>(lpText);
SendDlgItemMessage(hDlg,nID,TCM_INSERTITEM,nIndex,(LPARAM)&ItemData);
}
bool StdOpenDialog(HWND hWndParent, const char* lpTitle, const char* lpExtensions, char* lpBuffer, int nBufferSize)
{
bool bResult=false;
if(!lpBuffer) return false;
lpBuffer[0] = 0;
OPENFILENAME ofnFile;
ZeroMemory(&ofnFile,sizeof(OPENFILENAME));
ofnFile.lStructSize = sizeof(OPENFILENAME);
ofnFile.hwndOwner = hWndParent;
ofnFile.hInstance = (HINSTANCE)GetWindowLong(hWndParent,GWL_HINSTANCE);
ofnFile.lpstrFile = lpBuffer;
ofnFile.nMaxFile = nBufferSize;
ofnFile.lpstrFilter = const_cast<char*>(lpExtensions);
ofnFile.nFilterIndex = 0;
ofnFile.lpstrFileTitle = NULL;
ofnFile.nMaxFileTitle = 0;
ofnFile.lpstrInitialDir = NULL;
ofnFile.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofnFile.lpstrCustomFilter = NULL;
ofnFile.nMaxCustFilter = 0;
ofnFile.lpstrTitle = const_cast<char*>(lpTitle);
ofnFile.nFileOffset = 0;
ofnFile.nFileExtension = 0;
ofnFile.lpstrDefExt = NULL;
ofnFile.lpfnHook = NULL;
if(GetOpenFileName(&ofnFile)==TRUE) {
return true;
}
return false;
}
void PaintCurrentSkinToDialog(HWND hDlg)
{
HDC hDC = GetDC(hDlg);
BitmapBltEx(hDC, Plugin.hBmpSkin, 24, 53, 275, 153, 0, 0);
ReleaseDC(hDlg,hDC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -