📄 statisticsdlg.cpp
字号:
if (x > 90)
x = 100;
else if (x < 10)
x = 0;
if (y > 90)
y = 100;
else if (y < 10)
y = 0;
if (z > 90)
z = 100;
else if (z < 10)
z = 0;
//StatTitle
RemoveAnchor(IDC_STATIC_LASTRESET);
AddAnchor(IDC_STATIC_LASTRESET,CSize(0,0),CSize(x,0));
//stattree
RemoveAnchor(stattree);
AddAnchor(stattree,CSize(0,0),CSize(x,100));
//graph
RemoveAnchor(m_DownloadOMeter);
AddAnchor(m_DownloadOMeter,CSize(x,0),CSize(100,z));
RemoveAnchor(m_UploadOMeter);
AddAnchor(m_UploadOMeter,CSize(x,z),CSize(100,y));
RemoveAnchor(m_Statistics);
AddAnchor(m_Statistics,CSize(x,y),CSize(100,100));
//set range
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
CRect rcHR,rcHL;
m_wndSplitterstat_HR.GetWindowRect(rcHR);
m_wndSplitterstat_HL.GetWindowRect(rcHL);
ScreenToClient(rcHR);
ScreenToClient(rcHL);
m_wndSplitterstat.SetRange(rcW.left+11, rcW.right-11);
m_wndSplitterstat_HL.SetRange(rcHR.bottom+5, rcW.bottom-7);
m_wndSplitterstat_HR.SetRange(rcW.top+3, rcHL.top-5);
}
void CStatisticsDlg::DoResize_HL(int delta)
{
if(!delta)
return;
m_DownloadOMeter.InvalidateCtrl(true);
CSplitterControl::ChangeHeight(&m_UploadOMeter, delta , CW_TOPALIGN);
CSplitterControl::ChangeHeight(&m_Statistics, -delta, CW_BOTTOMALIGN);
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
CRect rcspl;
m_UploadOMeter.GetWindowRect(rcspl);
ScreenToClient(rcspl);
thePrefs.SetSplitterbarPositionStat_HL(rcspl.bottom*100/rcW.Height());
initCSize();
ShowInterval();
Invalidate();
UpdateWindow();
}
void CStatisticsDlg::DoResize_HR(int delta)
{
if(!delta)
return;
CSplitterControl::ChangeHeight(&m_DownloadOMeter, delta , CW_TOPALIGN);
CSplitterControl::ChangeHeight(&m_UploadOMeter, -delta, CW_BOTTOMALIGN);
m_Statistics.InvalidateCtrl(true);
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
CRect rcspl;
m_DownloadOMeter.GetWindowRect(rcspl);
ScreenToClient(rcspl);
thePrefs.SetSplitterbarPositionStat_HR(rcspl.bottom*100/rcW.Height());
initCSize();
ShowInterval();
Invalidate();
UpdateWindow();
}
void CStatisticsDlg::DoResize_V(int delta)
{
if(!delta)
return;
CSplitterControl::ChangeWidth(GetDlgItem(IDC_STATIC_LASTRESET), delta);
CSplitterControl::ChangeWidth(&stattree, delta);
CSplitterControl::ChangeWidth(&m_DownloadOMeter, -delta, CW_RIGHTALIGN);
CSplitterControl::ChangeWidth(&m_UploadOMeter, -delta, CW_RIGHTALIGN);
CSplitterControl::ChangeWidth(&m_Statistics, -delta, CW_RIGHTALIGN);
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
CRect rcspl;
GetDlgItem(IDC_STATTREE)->GetWindowRect(rcspl);
ScreenToClient(rcspl);
thePrefs.SetSplitterbarPositionStat(rcspl.right*100/rcW.Width());
initCSize();
ShowInterval();
Invalidate();
UpdateWindow();
}
LRESULT CStatisticsDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
if (m_wndSplitterstat)
{
CRect rctree,rcSpl,rcW;
CWnd* pWnd;
GetWindowRect(rcW);
ScreenToClient(rcW);
pWnd = GetDlgItem(IDC_STATTREE);
pWnd->GetWindowRect(rctree);
ScreenToClient(rctree);
if (rcW.Width()>0)
{
rcSpl.left=rctree.right+1;
rcSpl.right=rcSpl.left+4;
rcSpl.top=rcW.top+2;
rcSpl.bottom=rcW.bottom-6;
m_wndSplitterstat.MoveWindow(rcSpl,true);
}
}
if (m_wndSplitterstat_HL)
{
CRect rcUp,rcSpl,rcW;
CWnd* pWnd;
GetWindowRect(rcW);
ScreenToClient(rcW);
pWnd = &m_UploadOMeter;
pWnd->GetWindowRect(rcUp);
ScreenToClient(rcUp);
if (rcW.Height()>0)
{
rcSpl.left=rcUp.left+2;
rcSpl.right=rcUp.right-2;
rcSpl.top=rcUp.bottom+1;
rcSpl.bottom=rcUp.bottom+5;
m_wndSplitterstat_HL.MoveWindow(rcSpl,true);
}
}
if (m_wndSplitterstat_HR)
{
CRect rcDown,rcSpl,rcW;
CWnd* pWnd;
GetWindowRect(rcW);
ScreenToClient(rcW);
pWnd = &m_DownloadOMeter;
pWnd->GetWindowRect(rcDown);
ScreenToClient(rcDown);
if (rcW.Height()>0)
{
rcSpl.left=rcDown.left+2;
rcSpl.right=rcDown.right-2;
rcSpl.top=rcDown.bottom+1;
rcSpl.bottom=rcDown.bottom+5;
m_wndSplitterstat_HR.MoveWindow(rcSpl,true);
}
}
break;
case WM_NOTIFY:
if (wParam == IDC_SPLITTER_STAT)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize_V(pHdr->delta);
}
else if (wParam == IDC_SPLITTER_STAT_HL)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize_HL(pHdr->delta);
}
else if (wParam == IDC_SPLITTER_STAT_HR)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize_HR(pHdr->delta);
}
break;
case WM_WINDOWPOSCHANGED:
{
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
if (m_wndSplitterstat && rcW.Width()>0) Invalidate();
if (m_wndSplitterstat_HL && rcW.Height()>0) Invalidate();
if (m_wndSplitterstat_HR && rcW.Height()>0) Invalidate();
break;
}
case WM_SIZE:
{
//set range
if (m_wndSplitterstat)
{
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
if (rcW.Width()>0)
{
CRect rcSpl;
CRect rcTree,rcDown;
stattree.GetWindowRect(rcTree);
m_DownloadOMeter.GetWindowRect(rcDown);
ScreenToClient(rcTree);
ScreenToClient(rcDown);
long splitposstat=thePrefs.GetSplitterbarPositionStat()*rcW.Width()/100;
rcSpl.left=splitposstat; rcSpl.right=rcSpl.left+4; rcSpl.top=rcW.top+2; rcSpl.bottom=rcW.bottom-5;
m_wndSplitterstat.MoveWindow(rcSpl,true);
m_wndSplitterstat.SetRange(rcW.left+11, rcW.right-11);
}
}
if (m_wndSplitterstat_HR)
{
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
if (rcW.Width()>0)
{
CRect rcSpl;
CRect rcDown;
m_DownloadOMeter.GetWindowRect(rcDown);
ScreenToClient(rcDown);
long splitposstat=thePrefs.GetSplitterbarPositionStat()*rcW.Width()/100;
long splitposstat_HR=thePrefs.GetSplitterbarPositionStat_HR()*rcW.Height()/100;
long splitposstat_HL=thePrefs.GetSplitterbarPositionStat_HL()*rcW.Height()/100;
rcSpl.left=splitposstat+7; rcSpl.right=rcW.right-14; rcSpl.top=splitposstat_HR; rcSpl.bottom=rcSpl.top+4;
m_wndSplitterstat_HR.MoveWindow(rcSpl,true);
m_wndSplitterstat_HR.SetRange(rcW.top+3, splitposstat_HL-4);
}
}
if (m_wndSplitterstat_HL)
{
CRect rcW;
GetWindowRect(rcW);
ScreenToClient(rcW);
if (rcW.Width()>0)
{
CRect rcSpl;
CRect rcStat;
m_Statistics.GetWindowRect(rcStat);
ScreenToClient(rcStat);
long splitposstat=thePrefs.GetSplitterbarPositionStat()*rcW.Width()/100;
long splitposstat_HR=thePrefs.GetSplitterbarPositionStat_HR()*rcW.Height()/100;
long splitposstat_HL=thePrefs.GetSplitterbarPositionStat_HL()*rcW.Height()/100;
rcSpl.left=splitposstat+7; rcSpl.right=rcW.right-14; rcSpl.top=splitposstat_HL; rcSpl.bottom=rcSpl.top+4;
m_wndSplitterstat_HL.MoveWindow(rcSpl,true);
m_wndSplitterstat_HL.SetRange(splitposstat_HR+14, rcW.bottom-7);
}
}
break;
}
}
return CResizableDialog::DefWindowProc(message, wParam, lParam);
}
void CStatisticsDlg::RepaintMeters()
{
CString Buffer;
m_DownloadOMeter.SetBackgroundColor(thePrefs.GetStatsColor(0)) ;
m_DownloadOMeter.SetGridColor(thePrefs.GetStatsColor(1)) ;
m_DownloadOMeter.SetPlotColor( thePrefs.GetStatsColor(4) ,0) ;
m_DownloadOMeter.SetPlotColor( thePrefs.GetStatsColor(3) ,1) ;
m_DownloadOMeter.SetPlotColor( thePrefs.GetStatsColor(2) ,2) ;
m_UploadOMeter.SetBackgroundColor(thePrefs.GetStatsColor(0)) ;
m_UploadOMeter.SetGridColor(thePrefs.GetStatsColor(1)) ;
m_UploadOMeter.SetPlotColor( thePrefs.GetStatsColor(7) ,0) ;
m_UploadOMeter.SetPlotColor( thePrefs.GetStatsColor(6) ,1) ;
m_UploadOMeter.SetPlotColor( thePrefs.GetStatsColor(5) ,2) ;
// friends line
m_UploadOMeter.SetPlotColor( thePrefs.GetStatsColor(13) ,4) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -