Добавлена папка source в CristalDiskMark
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
/*---------------------------------------------------------------------------*/
|
||||
// Author : hiyohiyo
|
||||
// Mail : hiyohiyo@crystalmark.info
|
||||
// Web : https://crystalmark.info/
|
||||
// License : MIT License
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "SliderCtrlFx.h"
|
||||
#include "OsInfoFx.h"
|
||||
|
||||
IMPLEMENT_DYNAMIC(CSliderCtrlFx, CSliderCtrl)
|
||||
|
||||
CSliderCtrlFx::CSliderCtrlFx()
|
||||
{
|
||||
m_X = 0;
|
||||
m_Y = 0;
|
||||
m_BkDC = NULL;
|
||||
m_RenderMode = SystemDraw;
|
||||
m_bHighContrast = FALSE;
|
||||
m_bDarkMode = FALSE;
|
||||
m_bBkBitmapInit = FALSE;
|
||||
}
|
||||
|
||||
CSliderCtrlFx::~CSliderCtrlFx()
|
||||
{
|
||||
m_BkBrush.DeleteObject();
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSliderCtrlFx, CSliderCtrl)
|
||||
ON_WM_KEYDOWN()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
BOOL CSliderCtrlFx::InitControl(int x, int y, int width, int height, double zoomRatio, CDC* bkDC, int renderMode, BOOL bHighContrast, BOOL bDarkMode, int min, int max, int pos)
|
||||
{
|
||||
m_X = (int)(x * zoomRatio);
|
||||
m_Y = (int)(y * zoomRatio);
|
||||
m_CtrlSize.cx = (int)(width * zoomRatio);
|
||||
m_CtrlSize.cy = (int)(height * zoomRatio);
|
||||
MoveWindow(m_X, m_Y, m_CtrlSize.cx, m_CtrlSize.cy);
|
||||
SendMessage(TBM_SETTHUMBLENGTH, m_CtrlSize.cy, 0);
|
||||
|
||||
m_BkDC = bkDC;
|
||||
m_RenderMode = renderMode;
|
||||
m_bHighContrast = bHighContrast;
|
||||
m_bDarkMode = bDarkMode;
|
||||
|
||||
SetBkReload();
|
||||
LoadCtrlBk(bkDC);
|
||||
m_BkBrush.DeleteObject();
|
||||
if (bDarkMode)
|
||||
{
|
||||
// m_BkBrush.CreateSolidBrush(RGB(32, 32, 32));
|
||||
m_BkBrush.CreatePatternBrush(&m_BkBitmap);
|
||||
}
|
||||
else
|
||||
{
|
||||
// m_BkBrush.CreateSolidBrush(RGB(255, 255, 255));
|
||||
m_BkBrush.CreatePatternBrush(&m_BkBitmap);
|
||||
}
|
||||
|
||||
// Range, Pos
|
||||
SetRange(min, max, TRUE);
|
||||
SetPos(pos);
|
||||
|
||||
Invalidate();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CSliderCtrlFx::SetBkReload(void)
|
||||
{
|
||||
m_bBkBitmapInit = FALSE;
|
||||
m_bBkLoad = FALSE;
|
||||
}
|
||||
|
||||
void CSliderCtrlFx::LoadCtrlBk(CDC* drawDC)
|
||||
{
|
||||
if (m_bHighContrast) { SetBkReload(); return; }
|
||||
|
||||
if (m_BkBitmap.m_hObject != NULL)
|
||||
{
|
||||
BITMAP bitmapInfo;
|
||||
m_BkBitmap.GetBitmap(&bitmapInfo);
|
||||
if (bitmapInfo.bmBitsPixel != drawDC->GetDeviceCaps(BITSPIXEL))
|
||||
{
|
||||
SetBkReload();
|
||||
}
|
||||
}
|
||||
|
||||
if (&m_CtrlBitmap != NULL)
|
||||
{
|
||||
if (!m_bBkBitmapInit)
|
||||
{
|
||||
m_BkBitmap.DeleteObject();
|
||||
m_BkBitmap.CreateCompatibleBitmap(drawDC, m_CtrlSize.cx, m_CtrlSize.cy);
|
||||
m_bBkBitmapInit = TRUE;
|
||||
}
|
||||
|
||||
if (!m_bBkLoad)
|
||||
{
|
||||
CBitmap* pOldBitmap;
|
||||
CDC* pMemDC = new CDC;
|
||||
pMemDC->CreateCompatibleDC(drawDC);
|
||||
pOldBitmap = pMemDC->SelectObject(&m_BkBitmap);
|
||||
pMemDC->BitBlt(0, 0, m_CtrlSize.cx, m_CtrlSize.cy, m_BkDC, m_X, m_Y, SRCCOPY);
|
||||
pMemDC->SelectObject(pOldBitmap);
|
||||
pMemDC->DeleteDC();
|
||||
delete pMemDC;
|
||||
m_bBkLoad = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CSliderCtrlFx::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
|
||||
{
|
||||
if (nChar == VK_UP)
|
||||
{
|
||||
PostMessage(WM_KEYDOWN, VK_RIGHT, nFlags);
|
||||
return;
|
||||
}
|
||||
else if (nChar == VK_DOWN)
|
||||
{
|
||||
PostMessage(WM_KEYDOWN, VK_LEFT, nFlags);
|
||||
return;
|
||||
}
|
||||
|
||||
CSliderCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
|
||||
}
|
||||
Reference in New Issue
Block a user