3793 lines
119 KiB
C++
3793 lines
119 KiB
C++
/*---------------------------------------------------------------------------*/
|
|
// Author : hiyohiyo
|
|
// Mail : hiyohiyo@crystalmark.info
|
|
// Web : https://crystalmark.info/
|
|
// License : MIT License
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#include "stdafx.h"
|
|
#include "DiskMark.h"
|
|
#include "DiskMarkDlg.h"
|
|
#include "DiskBench.h"
|
|
#include "AboutDlg.h"
|
|
|
|
#include <math.h>
|
|
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
#define SIZE_X 1000
|
|
#define SIZE_Y 500
|
|
#define SIZE_MIN_Y 500
|
|
#define OFFSET_X 200
|
|
#define MAX_METER_LENGTH 320
|
|
#else
|
|
#define SIZE_X 480
|
|
#define SIZE_X_MIX 680
|
|
#define SIZE_Y 300
|
|
#define SIZE_MIN_Y 300
|
|
#define OFFSET_X 0
|
|
#define MAX_METER_LENGTH 192
|
|
#endif
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
extern PROCESS_INFORMATION pi;
|
|
|
|
CDiskMarkDlg::CDiskMarkDlg(CWnd* pParent /*=NULL*/)
|
|
: CMainDialogFx(CDiskMarkDlg::IDD, pParent)
|
|
{
|
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
m_hIconMini = AfxGetApp()->LoadIcon(IDI_TRAY_ICON);
|
|
|
|
m_AboutDlg = NULL;
|
|
m_SettingsDlg = NULL;
|
|
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
m_DefaultTheme = L"Aoi";
|
|
m_RecommendTheme = L"AoiLightAnimalEars~TenmuShinryuusai";
|
|
m_ThemeKeyName = L"ThemeAoi";
|
|
|
|
m_MarginButtonTop = 16;
|
|
m_MarginButtonLeft = 0;
|
|
m_MarginButtonBottom = 16;
|
|
m_MarginButtonRight = 0;
|
|
m_MarginMeterTop = 0;
|
|
m_MarginMeterLeft = 0;
|
|
m_MarginMeterBottom = 0;
|
|
m_MarginMeterRight = 16;
|
|
m_MarginCommentTop = 0;
|
|
m_MarginCommentLeft = 16;
|
|
m_MarginCommentBottom = 0;
|
|
m_MarginCommentRight = 16;
|
|
m_MarginDemoTop = 24;
|
|
m_MarginDemoLeft = 24;
|
|
m_MarginDemoBottom = 24;
|
|
m_MarginDemoRight = 24;
|
|
#elif MSI_MEI_SUPPORT
|
|
m_DefaultTheme = L"MSIMei";
|
|
m_RecommendTheme = L"MSIMei";
|
|
m_ThemeKeyName = L"ThemeMSIMei";
|
|
|
|
m_MarginButtonTop = 8;
|
|
m_MarginButtonLeft = 0;
|
|
m_MarginButtonBottom = 8;
|
|
m_MarginButtonRight = 0;
|
|
m_MarginMeterTop = 0;
|
|
m_MarginMeterLeft = 0;
|
|
m_MarginMeterBottom = 0;
|
|
m_MarginMeterRight = 16;
|
|
m_MarginCommentTop = 0;
|
|
m_MarginCommentLeft = 16;
|
|
m_MarginCommentBottom = 0;
|
|
m_MarginCommentRight = 64;
|
|
m_MarginDemoTop = 24;
|
|
m_MarginDemoLeft = 24;
|
|
m_MarginDemoBottom = 24;
|
|
m_MarginDemoRight = 24;
|
|
#elif SUISHO_SHIZUKU_SUPPORT
|
|
m_DefaultTheme = L"Shizuku";
|
|
m_RecommendTheme = L"ShizukuLightAnimalEars~TenmuShinryuusai";
|
|
m_ThemeKeyName = L"ThemeShizuku";
|
|
|
|
m_MarginButtonTop = 8;
|
|
m_MarginButtonLeft = 0;
|
|
m_MarginButtonBottom = 8;
|
|
m_MarginButtonRight = 0;
|
|
m_MarginMeterTop = 0;
|
|
m_MarginMeterLeft = 0;
|
|
m_MarginMeterBottom = 0;
|
|
m_MarginMeterRight = 16;
|
|
m_MarginCommentTop = 0;
|
|
m_MarginCommentLeft = 16;
|
|
m_MarginCommentBottom = 0;
|
|
m_MarginCommentRight = 64;
|
|
m_MarginDemoTop = 24;
|
|
m_MarginDemoLeft = 24;
|
|
m_MarginDemoBottom = 24;
|
|
m_MarginDemoRight = 24;
|
|
#else
|
|
m_DefaultTheme = L"Default";
|
|
m_ThemeKeyName = L"Theme";
|
|
|
|
m_MarginButtonTop = 4;
|
|
m_MarginButtonLeft = 0;
|
|
m_MarginButtonBottom = 4;
|
|
m_MarginButtonRight = 0;
|
|
m_MarginMeterTop = 0;
|
|
m_MarginMeterLeft = 0;
|
|
m_MarginMeterBottom = 0;
|
|
m_MarginMeterRight = 4;
|
|
m_MarginCommentTop = 0;
|
|
m_MarginCommentLeft = 4;
|
|
m_MarginCommentBottom = 0;
|
|
m_MarginCommentRight = 4;
|
|
m_MarginDemoTop = 8;
|
|
m_MarginDemoLeft = 8;
|
|
m_MarginDemoBottom = 8;
|
|
m_MarginDemoRight = 8;
|
|
#endif
|
|
|
|
m_BackgroundName = L"Background";
|
|
m_RandomThemeLabel = L"Random";
|
|
m_RandomThemeName = L"";
|
|
|
|
m_AdminMode = IsUserAnAdmin();
|
|
}
|
|
|
|
|
|
void CDiskMarkDlg::UpdateThemeInfo()
|
|
{
|
|
CMainDialogFx::UpdateThemeInfo();
|
|
|
|
CString theme = m_ThemeDir + m_CurrentTheme + L"\\theme.ini";
|
|
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
m_MarginButtonTop = GetPrivateProfileInt(L"Margin", L"ButtonTop", 16, theme);
|
|
m_MarginButtonLeft = GetPrivateProfileInt(L"Margin", L"ButtonLeft", 0, theme);
|
|
m_MarginButtonBottom = GetPrivateProfileInt(L"Margin", L"ButtonBottom", 16, theme);
|
|
m_MarginButtonRight = GetPrivateProfileInt(L"Margin", L"ButtonRight", 0, theme);
|
|
m_MarginMeterTop = GetPrivateProfileInt(L"Margin", L"MeterTop", 0, theme);
|
|
m_MarginMeterLeft = GetPrivateProfileInt(L"Margin", L"MeterLeft", 0, theme);
|
|
m_MarginMeterBottom = GetPrivateProfileInt(L"Margin", L"MeterBottom", 0, theme);
|
|
m_MarginMeterRight = GetPrivateProfileInt(L"Margin", L"MeterRight", 16, theme);
|
|
m_MarginCommentTop = GetPrivateProfileInt(L"Margin", L"CommentTop", 0, theme);
|
|
m_MarginCommentLeft = GetPrivateProfileInt(L"Margin", L"CommentLeft", 4, theme);
|
|
m_MarginCommentBottom = GetPrivateProfileInt(L"Margin", L"CommentBottom", 0, theme);
|
|
m_MarginCommentRight = GetPrivateProfileInt(L"Margin", L"CommentRight", 4, theme);
|
|
m_MarginDemoTop = GetPrivateProfileInt(L"Margin", L"DemoTop", 24, theme);
|
|
m_MarginDemoLeft = GetPrivateProfileInt(L"Margin", L"DemoLeft", 24, theme);
|
|
m_MarginDemoBottom = GetPrivateProfileInt(L"Margin", L"DemoBottom", 24, theme);
|
|
m_MarginDemoRight = GetPrivateProfileInt(L"Margin", L"DemoRight", 24, theme);
|
|
|
|
#elif MSI_MEI_SUPPORT
|
|
m_MarginButtonTop = GetPrivateProfileInt(L"Margin", L"ButtonTop", 8, theme);
|
|
m_MarginButtonLeft = GetPrivateProfileInt(L"Margin", L"ButtonLeft", 0, theme);
|
|
m_MarginButtonBottom = GetPrivateProfileInt(L"Margin", L"ButtonBottom", 8, theme);
|
|
m_MarginButtonRight = GetPrivateProfileInt(L"Margin", L"ButtonRight", 0, theme);
|
|
m_MarginMeterTop = GetPrivateProfileInt(L"Margin", L"MeterTop", 0, theme);
|
|
m_MarginMeterLeft = GetPrivateProfileInt(L"Margin", L"MeterLeft", 0, theme);
|
|
m_MarginMeterBottom = GetPrivateProfileInt(L"Margin", L"MeterBottom", 0, theme);
|
|
m_MarginMeterRight = GetPrivateProfileInt(L"Margin", L"MeterRight", 16, theme);
|
|
m_MarginCommentTop = GetPrivateProfileInt(L"Margin", L"CommentTop", 0, theme);
|
|
m_MarginCommentLeft = GetPrivateProfileInt(L"Margin", L"CommentLeft", 16, theme);
|
|
m_MarginCommentBottom = GetPrivateProfileInt(L"Margin", L"CommentBottom", 0, theme);
|
|
m_MarginCommentRight = GetPrivateProfileInt(L"Margin", L"CommentRight", 16, theme);
|
|
m_MarginDemoTop = GetPrivateProfileInt(L"Margin", L"DemoTop", 24, theme);
|
|
m_MarginDemoLeft = GetPrivateProfileInt(L"Margin", L"DemoLeft", 24, theme);
|
|
m_MarginDemoBottom = GetPrivateProfileInt(L"Margin", L"DemoBottom", 24, theme);
|
|
m_MarginDemoRight = GetPrivateProfileInt(L"Margin", L"DemoRight", 24, theme);
|
|
|
|
#elif SUISHO_SHIZUKU_SUPPORT
|
|
m_MarginButtonTop = GetPrivateProfileInt(L"Margin", L"ButtonTop", 8, theme);
|
|
m_MarginButtonLeft = GetPrivateProfileInt(L"Margin", L"ButtonLeft", 0, theme);
|
|
m_MarginButtonBottom = GetPrivateProfileInt(L"Margin", L"ButtonBottom", 8, theme);
|
|
m_MarginButtonRight = GetPrivateProfileInt(L"Margin", L"ButtonRight", 0, theme);
|
|
m_MarginMeterTop = GetPrivateProfileInt(L"Margin", L"MeterTop", 0, theme);
|
|
m_MarginMeterLeft = GetPrivateProfileInt(L"Margin", L"MeterLeft", 0, theme);
|
|
m_MarginMeterBottom = GetPrivateProfileInt(L"Margin", L"MeterBottom", 0, theme);
|
|
m_MarginMeterRight = GetPrivateProfileInt(L"Margin", L"MeterRight", 16, theme);
|
|
m_MarginCommentTop = GetPrivateProfileInt(L"Margin", L"CommentTop", 0, theme);
|
|
m_MarginCommentLeft = GetPrivateProfileInt(L"Margin", L"CommentLeft", 16, theme);
|
|
m_MarginCommentBottom = GetPrivateProfileInt(L"Margin", L"CommentBottom", 0, theme);
|
|
m_MarginCommentRight = GetPrivateProfileInt(L"Margin", L"CommentRight", 16, theme);
|
|
m_MarginDemoTop = GetPrivateProfileInt(L"Margin", L"DemoTop", 24, theme);
|
|
m_MarginDemoLeft = GetPrivateProfileInt(L"Margin", L"DemoLeft", 24, theme);
|
|
m_MarginDemoBottom = GetPrivateProfileInt(L"Margin", L"DemoBottom", 24, theme);
|
|
m_MarginDemoRight = GetPrivateProfileInt(L"Margin", L"DemoRight", 24, theme);
|
|
#else
|
|
m_MarginButtonTop = GetPrivateProfileInt(L"Margin", L"ButtonTop", 4, theme);
|
|
m_MarginButtonLeft = GetPrivateProfileInt(L"Margin", L"ButtonLeft", 0, theme);
|
|
m_MarginButtonBottom = GetPrivateProfileInt(L"Margin", L"ButtonBottom", 4, theme);
|
|
m_MarginButtonRight = GetPrivateProfileInt(L"Margin", L"ButtonRight", 0, theme);
|
|
m_MarginMeterTop = GetPrivateProfileInt(L"Margin", L"MeterTop", 0, theme);
|
|
m_MarginMeterLeft = GetPrivateProfileInt(L"Margin", L"MeterLeft", 0, theme);
|
|
m_MarginMeterBottom = GetPrivateProfileInt(L"Margin", L"MeterBottom", 0, theme);
|
|
m_MarginMeterRight = GetPrivateProfileInt(L"Margin", L"MeterRight", 4, theme);
|
|
m_MarginCommentTop = GetPrivateProfileInt(L"Margin", L"CommentTop", 0, theme);
|
|
m_MarginCommentLeft = GetPrivateProfileInt(L"Margin", L"CommentLeft", 8, theme);
|
|
m_MarginCommentBottom = GetPrivateProfileInt(L"Margin", L"CommentBottom", 0, theme);
|
|
m_MarginCommentRight = GetPrivateProfileInt(L"Margin", L"CommentRight", 8, theme);
|
|
m_MarginDemoTop = GetPrivateProfileInt(L"Margin", L"DemoTop", 8, theme);
|
|
m_MarginDemoLeft = GetPrivateProfileInt(L"Margin", L"DemoLeft", 8, theme);
|
|
m_MarginDemoBottom = GetPrivateProfileInt(L"Margin", L"DemoBottom", 8, theme);
|
|
m_MarginDemoRight = GetPrivateProfileInt(L"Margin", L"DemoRight", 8, theme);
|
|
#endif
|
|
}
|
|
|
|
|
|
CDiskMarkDlg::~CDiskMarkDlg()
|
|
{
|
|
}
|
|
|
|
void CDiskMarkDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CMainDialogFx::DoDataExchange(pDX);
|
|
|
|
DDX_Control(pDX, IDC_BUTTON_ALL, m_ButtonAll);
|
|
DDX_Control(pDX, IDC_BUTTON_TEST_0, m_ButtonTest0);
|
|
DDX_Control(pDX, IDC_BUTTON_TEST_1, m_ButtonTest1);
|
|
DDX_Control(pDX, IDC_BUTTON_TEST_2, m_ButtonTest2);
|
|
DDX_Control(pDX, IDC_BUTTON_TEST_3, m_ButtonTest3);
|
|
|
|
DDX_Control(pDX, IDC_TEST_READ_0, m_TestRead0);
|
|
DDX_Control(pDX, IDC_TEST_READ_1, m_TestRead1);
|
|
DDX_Control(pDX, IDC_TEST_READ_2, m_TestRead2);
|
|
DDX_Control(pDX, IDC_TEST_READ_3, m_TestRead3);
|
|
|
|
DDX_Control(pDX, IDC_TEST_WRITE_0, m_TestWrite0);
|
|
DDX_Control(pDX, IDC_TEST_WRITE_1, m_TestWrite1);
|
|
DDX_Control(pDX, IDC_TEST_WRITE_2, m_TestWrite2);
|
|
DDX_Control(pDX, IDC_TEST_WRITE_3, m_TestWrite3);
|
|
|
|
#ifdef MIX_MODE
|
|
DDX_Control(pDX, IDC_TEST_MIX_0, m_TestMix0);
|
|
DDX_Control(pDX, IDC_TEST_MIX_1, m_TestMix1);
|
|
DDX_Control(pDX, IDC_TEST_MIX_2, m_TestMix2);
|
|
DDX_Control(pDX, IDC_TEST_MIX_3, m_TestMix3);
|
|
DDX_Control(pDX, IDC_COMBO_MIX, m_ComboMix);
|
|
#endif
|
|
|
|
DDX_Control(pDX, IDC_COMMENT, m_Comment);
|
|
|
|
DDX_Control(pDX, IDC_COMBO_COUNT, m_ComboCount);
|
|
DDX_Control(pDX, IDC_COMBO_SIZE, m_ComboSize);
|
|
DDX_Control(pDX, IDC_COMBO_DRIVE, m_ComboDrive);
|
|
DDX_Control(pDX, IDC_COMBO_UNIT, m_ComboUnit);
|
|
|
|
DDX_Control(pDX, IDC_DEMO_SETTING, m_DemoSetting);
|
|
DDX_Control(pDX, IDC_READ_UNIT, m_ReadUnit);
|
|
DDX_Control(pDX, IDC_WRITE_UNIT, m_WriteUnit);
|
|
|
|
#ifdef MIX_MODE
|
|
DDX_Control(pDX, IDC_MIX_UNIT, m_MixUnit);
|
|
#endif
|
|
|
|
DDX_Text(pDX, IDC_COMBO_COUNT, m_ValueTestCount);
|
|
DDX_Text(pDX, IDC_COMBO_SIZE, m_ValueTestSize);
|
|
DDX_Text(pDX, IDC_COMBO_DRIVE, m_ValueTestDrive);
|
|
DDX_Text(pDX, IDC_COMBO_UNIT, m_ValueTestUnit);
|
|
DDX_CBIndex(pDX, IDC_COMBO_COUNT, m_IndexTestCount);
|
|
DDX_CBIndex(pDX, IDC_COMBO_SIZE, m_IndexTestSize);
|
|
DDX_CBIndex(pDX, IDC_COMBO_DRIVE, m_IndexTestDrive);
|
|
DDX_CBIndex(pDX, IDC_COMBO_UNIT, m_IndexTestUnit);
|
|
#ifdef MIX_MODE
|
|
DDX_CBIndex(pDX, IDC_COMBO_MIX, m_IndexTestMix);
|
|
#endif
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CDiskMarkDlg, CMainDialogFx)
|
|
//}}AFX_MSG_MAP
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
ON_WM_GETMINMAXINFO()
|
|
ON_WM_SIZE()
|
|
#endif
|
|
ON_COMMAND(ID_EXIT, OnExit)
|
|
ON_COMMAND(ID_ABOUT, OnAbout)
|
|
ON_COMMAND(ID_COPY, OnCopy)
|
|
ON_MESSAGE(WM_UPDATE_SCORE, OnUpdateScore)
|
|
ON_MESSAGE(WM_UPDATE_MESSAGE, OnUpdateMessage)
|
|
ON_MESSAGE(WM_EXIT_BENCHMARK, OnExitBenchmark)
|
|
ON_WM_LBUTTONDOWN()
|
|
|
|
ON_COMMAND(ID_ZOOM_100, &CDiskMarkDlg::OnZoom100)
|
|
ON_COMMAND(ID_ZOOM_125, &CDiskMarkDlg::OnZoom125)
|
|
ON_COMMAND(ID_ZOOM_150, &CDiskMarkDlg::OnZoom150)
|
|
ON_COMMAND(ID_ZOOM_200, &CDiskMarkDlg::OnZoom200)
|
|
ON_COMMAND(ID_ZOOM_250, &CDiskMarkDlg::OnZoom250)
|
|
ON_COMMAND(ID_ZOOM_300, &CDiskMarkDlg::OnZoom300)
|
|
ON_COMMAND(ID_ZOOM_AUTO, &CDiskMarkDlg::OnZoomAuto)
|
|
|
|
ON_COMMAND(ID_HELP, &CDiskMarkDlg::OnHelp)
|
|
ON_COMMAND(ID_CRYSTALDEWWORLD, &CDiskMarkDlg::OnCrystalDewWorld)
|
|
ON_COMMAND(ID_MODE_DEFAULT, &CDiskMarkDlg::OnModeDefault)
|
|
ON_COMMAND(ID_MODE_ALL0X00, &CDiskMarkDlg::OnModeAll0x00)
|
|
|
|
ON_COMMAND(ID_SETTING_DEFAULT, &CDiskMarkDlg::OnSettingDefault)
|
|
ON_COMMAND(ID_SETTING_NVME_8, &CDiskMarkDlg::OnSettingNVMe8)
|
|
ON_COMMAND(ID_SETTING_FLASH_MEMORY, &CDiskMarkDlg::OnSettingFlashMemory)
|
|
|
|
ON_COMMAND(ID_PROFILE_DEFAULT, &CDiskMarkDlg::OnProfileDefault)
|
|
ON_COMMAND(ID_PROFILE_REAL, &CDiskMarkDlg::OnProfileReal)
|
|
ON_COMMAND(ID_PROFILE_PEAK, &CDiskMarkDlg::OnProfilePeak)
|
|
ON_COMMAND(ID_PROFILE_DEMO, &CDiskMarkDlg::OnProfileDemo)
|
|
|
|
#ifdef MIX_MODE
|
|
ON_COMMAND(ID_PROFILE_DEFAULT_MIX, &CDiskMarkDlg::OnProfileDefaultMix)
|
|
ON_COMMAND(ID_PROFILE_REAL_MIX, &CDiskMarkDlg::OnProfileRealMix)
|
|
ON_COMMAND(ID_PROFILE_PEAK_MIX, &CDiskMarkDlg::OnProfilePeakMix)
|
|
#endif
|
|
|
|
ON_COMMAND(ID_BENCHMARK_READ_WRITE, &CDiskMarkDlg::OnBenchmarkReadWrite)
|
|
ON_COMMAND(ID_BENCHMARK_READ_ONLY, &CDiskMarkDlg::OnBenchmarkReadOnly)
|
|
ON_COMMAND(ID_BENCHMARK_WRITE_ONLY, &CDiskMarkDlg::OnBenchmarkWriteOnly)
|
|
|
|
//}}AFX_MSG_MAP
|
|
ON_COMMAND(ID_SAVE_TEXT, &CDiskMarkDlg::OnSaveText)
|
|
ON_COMMAND(ID_SAVE_IMAGE, &CDiskMarkDlg::OnSaveImage)
|
|
ON_COMMAND(ID_SETTINGS_QUEUESTHREADS, &CDiskMarkDlg::OnSettingsQueuesThreads)
|
|
ON_COMMAND(ID_FONT_SETTING, &CDiskMarkDlg::OnFontSetting)
|
|
ON_WM_NCCREATE()
|
|
ON_MESSAGE(WM_QUERYENDSESSION, &CDiskMarkDlg::OnQueryEndSession)
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON_ALL, &CDiskMarkDlg::OnAll)
|
|
ON_BN_CLICKED(IDC_BUTTON_TEST_0, &CDiskMarkDlg::OnTest0)
|
|
ON_BN_CLICKED(IDC_BUTTON_TEST_1, &CDiskMarkDlg::OnTest1)
|
|
ON_BN_CLICKED(IDC_BUTTON_TEST_2, &CDiskMarkDlg::OnTest2)
|
|
ON_BN_CLICKED(IDC_BUTTON_TEST_3, &CDiskMarkDlg::OnTest3)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_DRIVE, &CDiskMarkDlg::OnCbnSelchangeComboDrive)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_UNIT, &CDiskMarkDlg::OnCbnSelchangeComboUnit)
|
|
#ifdef MIX_MODE
|
|
ON_CBN_SELCHANGE(IDC_COMBO_MIX, &CDiskMarkDlg::OnCbnSelchangeComboMix)
|
|
#endif
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
LRESULT CDiskMarkDlg::OnQueryEndSession(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::CheckThemeEdition(CString name)
|
|
{
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
if (name.Find(L"Aoi") == 0) { return TRUE; }
|
|
#elif MSI_MEI_SUPPORT
|
|
if (name.Find(L"MSIMei") == 0) { return TRUE; }
|
|
#elif SUISHO_SHIZUKU_SUPPORT
|
|
if(name.Find(L"Shizuku") == 0) { return TRUE; }
|
|
#elif KUREI_KEI_SUPPORT
|
|
if(name.Find(L"KureiKei") == 0) { return TRUE; }
|
|
#else
|
|
if(name.Find(L"Shizuku") != 0 && name.Find(L"Aoi") != 0 && name.Find(L"MSIMei") != 0 && name.Find(L"Tokka") != 0 && name.Find(L"KureiKei") != 0 && name.Find(L".") != 0) { return TRUE; }
|
|
#endif
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
int CALLBACK EnumFontFamExProcDefaultFont(ENUMLOGFONTEX* lpelfe, NEWTEXTMETRICEX* lpntme, int FontType, LPARAM lParam)
|
|
{
|
|
if (_tcscmp(lpelfe->elfLogFont.lfFaceName, DEFAULT_FONT_FACE_1) == 0)
|
|
{
|
|
*((BOOL*)lParam) = TRUE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::IsDefaultMode()
|
|
{
|
|
if (m_MeasureTime == 5
|
|
&& m_BenchSize[0] == 1024 && m_BenchQueues[0] == 8 && m_BenchThreads[0] == 1 && m_BenchType[0] == BENCH_SEQ
|
|
&& m_BenchSize[1] == 1024 && m_BenchQueues[1] == 1 && m_BenchThreads[1] == 1 && m_BenchType[1] == BENCH_SEQ
|
|
&& m_BenchSize[2] == 4 && m_BenchQueues[2] == 32 && m_BenchThreads[2] == 1 && m_BenchType[2] == BENCH_RND
|
|
&& m_BenchSize[3] == 4 && m_BenchQueues[3] == 1 && m_BenchThreads[3] == 1 && m_BenchType[3] == BENCH_RND
|
|
&& m_BenchSize[4] == 1024 && m_BenchQueues[4] == 8 && m_BenchThreads[4] == 1 && m_BenchType[4] == BENCH_SEQ
|
|
&& m_BenchSize[5] == 4 && m_BenchQueues[5] == 32 && m_BenchThreads[5] == 1 && m_BenchType[5] == BENCH_RND
|
|
&& m_BenchSize[8] == 1024 && m_BenchQueues[8] == 8 && m_BenchThreads[8] == 1 && m_BenchType[8] == BENCH_SEQ
|
|
)
|
|
{
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::IsNVMe8Mode()
|
|
{
|
|
if (m_MeasureTime == 5
|
|
&& m_BenchSize[0] == 1024 && m_BenchQueues[0] == 8 && m_BenchThreads[0] == 1 && m_BenchType[0] == BENCH_SEQ
|
|
&& m_BenchSize[1] == 128 && m_BenchQueues[1] == 32 && m_BenchThreads[1] == 1 && m_BenchType[1] == BENCH_SEQ
|
|
&& m_BenchSize[2] == 4 && m_BenchQueues[2] == 32 && m_BenchThreads[2] == 16 && m_BenchType[2] == BENCH_RND
|
|
&& m_BenchSize[3] == 4 && m_BenchQueues[3] == 1 && m_BenchThreads[3] == 1 && m_BenchType[3] == BENCH_RND
|
|
&& m_BenchSize[4] == 1024 && m_BenchQueues[4] == 8 && m_BenchThreads[4] == 1 && m_BenchType[4] == BENCH_SEQ
|
|
&& m_BenchSize[5] == 4 && m_BenchQueues[5] == 32 && m_BenchThreads[5] == 16 && m_BenchType[5] == BENCH_RND
|
|
&& m_BenchSize[8] == 1024 && m_BenchQueues[8] == 8 && m_BenchThreads[8] == 1 && m_BenchType[8] == BENCH_SEQ
|
|
)
|
|
{
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
BOOL CDiskMarkDlg::IsFlashMemoryMode()
|
|
{
|
|
if (m_MeasureTime == 1
|
|
&& m_BenchSize[0] == 1024 && m_BenchQueues[0] == 8 && m_BenchThreads[0] == 1 && m_BenchType[0] == BENCH_SEQ
|
|
&& m_BenchSize[1] == 1024 && m_BenchQueues[1] == 1 && m_BenchThreads[1] == 1 && m_BenchType[1] == BENCH_SEQ
|
|
&& m_BenchSize[2] == 4 && m_BenchQueues[2] == 32 && m_BenchThreads[2] == 1 && m_BenchType[2] == BENCH_RND
|
|
&& m_BenchSize[3] == 4 && m_BenchQueues[3] == 1 && m_BenchThreads[3] == 1 && m_BenchType[3] == BENCH_RND
|
|
&& m_BenchSize[4] == 1024 && m_BenchQueues[4] == 8 && m_BenchThreads[4] == 1 && m_BenchType[4] == BENCH_SEQ
|
|
&& m_BenchSize[5] == 4 && m_BenchQueues[5] == 32 && m_BenchThreads[5] == 1 && m_BenchType[5] == BENCH_RND
|
|
&& m_BenchSize[8] == 1024 && m_BenchQueues[8] == 8 && m_BenchThreads[8] == 1 && m_BenchType[8] == BENCH_SEQ
|
|
)
|
|
{
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::OnInitDialog()
|
|
{
|
|
CMainDialogFx::OnInitDialog();
|
|
|
|
m_hAccelerator = ::LoadAccelerators(AfxGetInstanceHandle(),
|
|
MAKEINTRESOURCE(IDR_ACCELERATOR));
|
|
|
|
SetIcon(m_hIcon, TRUE);
|
|
SetIcon(m_hIconMini, FALSE);
|
|
|
|
TCHAR str[256];
|
|
|
|
CClientDC dc(this);
|
|
LOGFONT logfont;
|
|
CString defaultFontFace;
|
|
BOOL hasDefaultFont = FALSE;
|
|
ZeroMemory(&logfont, sizeof(LOGFONT));
|
|
logfont.lfCharSet = DEFAULT_CHARSET;
|
|
::EnumFontFamiliesExW(dc.m_hDC, &logfont, (FONTENUMPROC)EnumFontFamExProcDefaultFont, (INT_PTR)(&hasDefaultFont), 0);
|
|
|
|
if (hasDefaultFont)
|
|
{
|
|
defaultFontFace = DEFAULT_FONT_FACE_1;
|
|
}
|
|
else
|
|
{
|
|
defaultFontFace = DEFAULT_FONT_FACE_2;
|
|
}
|
|
|
|
GetPrivateProfileString(L"Setting", L"FontFace", defaultFontFace, str, 256, m_Ini);
|
|
m_FontFace = str;
|
|
|
|
m_TestData = GetPrivateProfileInt(L"Setting", L"TestData", TEST_DATA_RANDOM, m_Ini);
|
|
if (m_TestData != TEST_DATA_ALL0X00)
|
|
{
|
|
m_TestData = TEST_DATA_RANDOM;
|
|
}
|
|
|
|
m_Profile = GetPrivateProfileInt(L"Setting", L"Profile", PROFILE_DEFAULT, m_Ini);
|
|
|
|
#ifdef MIX_MODE
|
|
if (PROFILE_DEFAULT > m_Profile || m_Profile > PROFILE_REAL_MIX)
|
|
#else
|
|
if (PROFILE_DEFAULT > m_Profile || m_Profile > PROFILE_DEMO)
|
|
#endif
|
|
{
|
|
m_Profile = PROFILE_DEFAULT;
|
|
}
|
|
|
|
m_Benchmark = GetPrivateProfileInt(L"Setting", L"Benchmark", BENCHMARK_READ_WRITE, m_Ini);
|
|
if (BENCHMARK_READ > m_Benchmark || m_Benchmark > BENCHMARK_READ_WRITE)
|
|
{
|
|
m_Benchmark = BENCHMARK_READ_WRITE;
|
|
}
|
|
|
|
if (m_Profile == PROFILE_DEFAULT_MIX || m_Profile == PROFILE_PEAK_MIX || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
m_MixMode = TRUE;
|
|
}
|
|
else
|
|
{
|
|
m_MixMode = FALSE;
|
|
}
|
|
|
|
m_FontScale = GetPrivateProfileInt(L"Setting", L"FontScale", 100, m_Ini);
|
|
if (m_FontScale > 200 || m_FontScale < 50)
|
|
{
|
|
m_FontScale = 100;
|
|
m_FontRatio = 1.0;
|
|
}
|
|
else
|
|
{
|
|
m_FontRatio = m_FontScale / 100.0;
|
|
}
|
|
|
|
m_FontRender = GetPrivateProfileInt(L"Setting", L"FontRender", CLEARTYPE_NATURAL_QUALITY, m_Ini);
|
|
if (m_FontRender > CLEARTYPE_NATURAL_QUALITY)
|
|
{
|
|
m_FontRender = CLEARTYPE_NATURAL_QUALITY;
|
|
}
|
|
|
|
// Unit
|
|
m_ComboUnit.AddString(L"MB/s");
|
|
m_ComboUnit.AddString(L"GB/s");
|
|
m_ComboUnit.AddString(L"IOPS");
|
|
m_ComboUnit.AddString(L"μs");
|
|
|
|
// Count
|
|
for (int i = 1; i < 10; i++)
|
|
{
|
|
CString cstr;
|
|
cstr.Format(L"%d", i);
|
|
m_ComboCount.AddString(cstr);
|
|
}
|
|
|
|
#ifdef MIX_MODE
|
|
// Mix
|
|
for (int i = 1; i < 10; i++)
|
|
{
|
|
CString cstr;
|
|
cstr.Format(L"R%d%%/W%d%%", i * 10, 100 - i*10);
|
|
m_ComboMix.AddString(cstr);
|
|
}
|
|
#endif
|
|
|
|
m_WinThread = NULL;
|
|
m_DiskBenchStatus = FALSE;
|
|
|
|
InitThemeLang();
|
|
InitMenu();
|
|
UpdateThemeInfo();
|
|
ChangeLang(m_CurrentLang);
|
|
|
|
UpdateQueuesThreads();
|
|
|
|
m_IndexTestCount = GetPrivateProfileInt(L"Setting", L"TestCount", 2, m_Ini);
|
|
if (m_IndexTestCount < 0 || m_IndexTestCount >= 9)
|
|
{
|
|
m_IndexTestCount = 2; // default value is 3.
|
|
}
|
|
m_ComboCount.SetCurSel(m_IndexTestCount);
|
|
|
|
// Size
|
|
TCHAR size[13][8] = { L"16MiB", L"32MiB", L"64MiB", L"128MiB", L"256MiB", L"512MiB", L"1GiB", L"2GiB", L"4GiB", L"8GiB", L"16GiB", L"32GiB", L"64GiB" };
|
|
|
|
for (int i = 0; i < 13; i++)
|
|
{
|
|
CString cstr;
|
|
cstr.Format(L"%s", size[i]);
|
|
m_ComboSize.AddString(cstr);
|
|
}
|
|
m_IndexTestSize = GetPrivateProfileInt(L"Setting", L"TestSize", 6, m_Ini);
|
|
if (m_IndexTestSize < 0 || m_IndexTestSize > 13)
|
|
{
|
|
m_IndexTestSize = 6; // default value is 1GiB;
|
|
}
|
|
m_ComboSize.SetCurSel(m_IndexTestSize);
|
|
|
|
m_IndexTestUnit = GetPrivateProfileInt(L"Setting", L"TestUnit", 0, m_Ini);
|
|
if (m_IndexTestUnit < 0 || m_IndexTestUnit >= 3)
|
|
{
|
|
m_IndexTestUnit = 0;
|
|
}
|
|
m_ComboUnit.SetCurSel(m_IndexTestUnit);
|
|
|
|
m_IndexTestMix = GetPrivateProfileInt(L"Setting", L"TestMix", 6, m_Ini);
|
|
if (m_IndexTestMix < 0 || m_IndexTestMix > 10)
|
|
{
|
|
m_IndexTestMix = 6; // default retio is R70W30;
|
|
}
|
|
m_MixRatio = (9 - m_IndexTestMix) * 10;
|
|
|
|
#ifdef MIX_MODE
|
|
m_ComboMix.SetCurSel(m_IndexTestMix);
|
|
#endif
|
|
|
|
UpdateData(FALSE);
|
|
|
|
// Drive
|
|
InitDrive();
|
|
|
|
InitScore();
|
|
UpdateUnitLabel();
|
|
|
|
switch(GetPrivateProfileInt(L"Setting", L"ZoomType", 0, m_Ini))
|
|
{
|
|
case 100: CheckRadioZoomType(ID_ZOOM_100, 100); break;
|
|
case 125: CheckRadioZoomType(ID_ZOOM_125, 125); break;
|
|
case 150: CheckRadioZoomType(ID_ZOOM_150, 150); break;
|
|
case 200: CheckRadioZoomType(ID_ZOOM_200, 200); break;
|
|
case 250: CheckRadioZoomType(ID_ZOOM_250, 250); break;
|
|
case 300: CheckRadioZoomType(ID_ZOOM_300, 300); break;
|
|
default: CheckRadioZoomType(ID_ZOOM_AUTO, 0); break;
|
|
}
|
|
|
|
ChangeZoomType(m_ZoomType);
|
|
|
|
m_SizeX = SIZE_X;
|
|
m_SizeY = SIZE_Y;
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
m_SizeX = SIZE_X_MIX;
|
|
}
|
|
#endif
|
|
|
|
SetWindowTitle(L"");
|
|
|
|
SetClientSize(m_SizeX, m_SizeY, m_ZoomRatio);
|
|
|
|
m_bShowWindow = TRUE;
|
|
|
|
CenterWindow();
|
|
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
|
|
m_bInitializing = FALSE;
|
|
|
|
SetForegroundWindow();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CDiskMarkDlg::UpdateDialogSize()
|
|
{
|
|
CDialogFx::UpdateDialogSize();
|
|
m_bHighContrast = FALSE;
|
|
|
|
ShowWindow(SW_HIDE);
|
|
int offsetX = 0;
|
|
int comboDriveX = 0;
|
|
|
|
m_SizeX = SIZE_X;
|
|
m_SizeY = SIZE_Y;
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
m_SizeX = SIZE_X_MIX;
|
|
}
|
|
#endif
|
|
SetClientSize(m_SizeX, m_SizeY, m_ZoomRatio);
|
|
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
if (m_CharacterPosition == 0)
|
|
{
|
|
offsetX = OFFSET_X;
|
|
}
|
|
#endif
|
|
|
|
UpdateBackground(TRUE, m_bDarkMode);
|
|
SetControlFont();
|
|
|
|
if (m_Profile != PROFILE_DEFAULT && m_Profile != PROFILE_DEFAULT_MIX)
|
|
{
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
comboDriveX = 120;
|
|
#else
|
|
comboDriveX = 72;
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
comboDriveX = 0;
|
|
}
|
|
|
|
m_TestRead0.SetDrawFrame(m_bHighContrast);
|
|
m_TestRead1.SetDrawFrame(m_bHighContrast);
|
|
m_TestRead2.SetDrawFrame(m_bHighContrast);
|
|
m_TestRead3.SetDrawFrame(m_bHighContrast);
|
|
m_TestWrite0.SetDrawFrame(m_bHighContrast);
|
|
m_TestWrite1.SetDrawFrame(m_bHighContrast);
|
|
m_TestWrite2.SetDrawFrame(m_bHighContrast);
|
|
m_TestWrite3.SetDrawFrame(m_bHighContrast);
|
|
m_Comment.SetDrawFrame(m_bHighContrast);
|
|
|
|
#ifdef MIX_MODE
|
|
m_TestMix0.SetDrawFrame(m_bHighContrast);
|
|
m_TestMix1.SetDrawFrame(m_bHighContrast);
|
|
m_TestMix2.SetDrawFrame(m_bHighContrast);
|
|
m_TestMix3.SetDrawFrame(m_bHighContrast);
|
|
#endif
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_ReadUnit.ShowWindow(SW_HIDE);
|
|
m_WriteUnit.ShowWindow(SW_HIDE);
|
|
|
|
m_TestRead1.ShowWindow(SW_HIDE);
|
|
m_TestRead2.ShowWindow(SW_HIDE);
|
|
m_TestRead3.ShowWindow(SW_HIDE);
|
|
m_TestWrite1.ShowWindow(SW_HIDE);
|
|
m_TestWrite2.ShowWindow(SW_HIDE);
|
|
m_TestWrite3.ShowWindow(SW_HIDE);
|
|
|
|
m_DemoSetting.ShowWindow(SW_SHOW);
|
|
}
|
|
else
|
|
{
|
|
m_ReadUnit.ShowWindow(SW_SHOW);
|
|
m_WriteUnit.ShowWindow(SW_SHOW);
|
|
|
|
m_TestRead1.ShowWindow(SW_SHOW);
|
|
m_TestRead2.ShowWindow(SW_SHOW);
|
|
m_TestRead3.ShowWindow(SW_SHOW);
|
|
m_TestWrite1.ShowWindow(SW_SHOW);
|
|
m_TestWrite2.ShowWindow(SW_SHOW);
|
|
m_TestWrite3.ShowWindow(SW_SHOW);
|
|
|
|
m_DemoSetting.ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
m_ButtonAll.InitControl(12 + offsetX, 8, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonAll.SetHandCursor(TRUE);
|
|
/*
|
|
m_TestRead0.SetGlassColor(m_Glass, m_GlassAlpha);
|
|
m_TestWrite0.SetGlassColor(m_Glass, m_GlassAlpha);
|
|
|
|
m_TestRead0.InitControl(12 + offsetX, 96, 384, 348, m_ZoomRatio, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawGlass, m_bHighContrast, FALSE);
|
|
m_TestWrite0.InitControl(404 + offsetX, 96, 384, 348, m_ZoomRatio, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawGlass, m_bHighContrast, FALSE);
|
|
*/
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
m_TestRead0.InitControl(12 + offsetX, 96, 384, 344, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Demo"), 1, SS_CENTER, OwnerDrawImage, FALSE, FALSE, FALSE);
|
|
m_TestWrite0.InitControl(404 + offsetX, 96, 384, 344, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Demo"), 1, SS_CENTER, OwnerDrawImage, FALSE, FALSE, FALSE);
|
|
m_Comment.InitControl(12 + offsetX, 440, 776, 60, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
#else
|
|
m_TestRead0.InitControl(12 + offsetX, 96, 384, 348, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Demo"), 1, SS_CENTER, OwnerDrawImage, FALSE, FALSE, FALSE);
|
|
m_TestWrite0.InitControl(404 + offsetX, 96, 384, 348, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Demo"), 1, SS_CENTER, OwnerDrawImage, FALSE, FALSE, FALSE);
|
|
m_Comment.InitControl(12 + offsetX, 452, 776, 40, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
#endif
|
|
m_Comment.SetMargin(m_MarginCommentTop, m_MarginCommentLeft, m_MarginCommentBottom, m_MarginCommentRight, m_ZoomRatio);
|
|
m_Comment.Adjust();
|
|
|
|
m_DemoSetting.InitControl(140 + offsetX, 56, 528, 40, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_ReadUnit.InitControl(12 + offsetX, 96, 120, 32, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_WriteUnit.InitControl(672 + offsetX, 96, 116, 32, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ComboCount.InitControl(140 + offsetX, 8, 60, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboSize.InitControl(204 + offsetX, 8, 140, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboDrive.InitControl(348 + offsetX, 8, 320, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboUnit.InitControl(672 + offsetX, 8, 116, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
#else
|
|
m_TestRead0.SetDrawFrameEx(TRUE, m_Frame);
|
|
m_TestWrite0.SetDrawFrameEx(TRUE, m_Frame);
|
|
|
|
m_ButtonAll.InitControl(8 + offsetX, 8, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonAll.SetHandCursor(TRUE);
|
|
|
|
m_TestRead0.SetGlassColor(m_Glass, m_GlassAlpha);
|
|
m_TestWrite0.SetGlassColor(m_Glass, m_GlassAlpha);
|
|
|
|
m_TestRead0.InitControl(8 + offsetX, 64, 228, 196, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawGlass, m_bHighContrast, TRUE, FALSE);
|
|
m_TestWrite0.InitControl(244 + offsetX, 64, 228, 196, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawGlass, m_bHighContrast, TRUE, FALSE);
|
|
|
|
m_Comment.InitControl(8 + offsetX, 268, 464, 24, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_Comment.SetMargin(m_MarginCommentTop, m_MarginCommentLeft, m_MarginCommentBottom, m_MarginCommentRight, m_ZoomRatio);
|
|
m_Comment.Adjust();
|
|
|
|
m_DemoSetting.InitControl(84 + offsetX, 36, 320, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_ReadUnit.InitControl(84 + offsetX, 36, 124, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_WriteUnit.InitControl(280 + offsetX, 36, 124, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ComboCount.InitControl(84 + offsetX, 8, 40, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboSize.InitControl(128 + offsetX, 8, 80, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboDrive.InitControl(212 + offsetX, 8, 188, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboUnit.InitControl(404 + offsetX, 8, 68, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
m_ButtonAll.InitControl(12 + offsetX, 8, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest0.InitControl(12 + offsetX, 96, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest1.InitControl(12 + offsetX, 184, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest2.InitControl(12 + offsetX, 272, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest3.InitControl(12 + offsetX, 360, 120, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ButtonAll.SetHandCursor(TRUE);
|
|
m_ButtonTest0.SetHandCursor(TRUE);
|
|
m_ButtonTest1.SetHandCursor(TRUE);
|
|
m_ButtonTest2.SetHandCursor(TRUE);
|
|
m_ButtonTest3.SetHandCursor(TRUE);
|
|
|
|
m_TestRead0.InitControl(140 + offsetX, 96, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead1.InitControl(140 + offsetX, 184, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead2.InitControl(140 + offsetX, 272, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead3.InitControl(140 + offsetX, 360, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_TestWrite0.InitControl(468 + offsetX, 96, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite1.InitControl(468 + offsetX, 184, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite2.InitControl(468 + offsetX, 272, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite3.InitControl(468 + offsetX, 360, 320, 80, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
m_Comment.InitControl(12 + offsetX, 440, 776, 60, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
#else
|
|
m_Comment.InitControl(12 + offsetX, 452, 776, 40, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
#endif
|
|
|
|
m_Comment.SetMargin(m_MarginCommentTop, m_MarginCommentLeft, m_MarginCommentBottom, m_MarginCommentRight, m_ZoomRatio);
|
|
m_Comment.Adjust();
|
|
|
|
m_ReadUnit.InitControl(140 + offsetX, 56, 320, 40, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_WriteUnit.InitControl(468 + offsetX, 56, 320, 40, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ComboCount.InitControl(140 + offsetX, 8, 60, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboSize.InitControl(204 + offsetX, 8, 140, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboUnit.InitControl(672 + offsetX, 8, 116, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_REAL)
|
|
{
|
|
m_ComboDrive.InitControl(348 + offsetX, 8, 440, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
}
|
|
else
|
|
{
|
|
m_ComboDrive.InitControl(348 + offsetX, 8, 320, 500, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
}
|
|
#else
|
|
|
|
m_ButtonAll.InitControl(8 + offsetX, 8, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest0.InitControl(8 + offsetX, 60, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest1.InitControl(8 + offsetX, 112, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest2.InitControl(8 + offsetX, 164, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ButtonTest3.InitControl(8 + offsetX, 216, 72, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Button"), 3, BS_CENTER, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ButtonAll.SetHandCursor(TRUE);
|
|
m_ButtonTest0.SetHandCursor(TRUE);
|
|
m_ButtonTest1.SetHandCursor(TRUE);
|
|
m_ButtonTest2.SetHandCursor(TRUE);
|
|
m_ButtonTest3.SetHandCursor(TRUE);
|
|
|
|
m_TestRead0.InitControl(84 + offsetX, 60, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead1.InitControl(84 + offsetX, 112, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead2.InitControl(84 + offsetX, 164, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestRead3.InitControl(84 + offsetX, 216, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_TestWrite0.InitControl(280 + offsetX, 60, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite1.InitControl(280 + offsetX, 112, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite2.InitControl(280 + offsetX, 164, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestWrite3.InitControl(280 + offsetX, 216, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
if (m_MixMode)
|
|
{
|
|
m_Comment.InitControl(8 + offsetX, 268, 664, 24, m_ZoomRatio, &m_BkDC, IP(L"CommentL"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
}
|
|
else
|
|
{
|
|
m_Comment.InitControl(8 + offsetX, 268, 464, 24, m_ZoomRatio, &m_BkDC, IP(L"Comment"), 1, ES_LEFT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
}
|
|
m_Comment.SetMargin(m_MarginCommentTop, m_MarginCommentLeft, m_MarginCommentBottom, m_MarginCommentRight, m_ZoomRatio);
|
|
m_Comment.Adjust();
|
|
|
|
m_ReadUnit.InitControl(84 + offsetX, 36, 192, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
m_WriteUnit.InitControl(280 + offsetX, 36, 192, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_ComboCount.InitControl(84 + offsetX, 8, 40, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboSize.InitControl(128 + offsetX, 8, 80, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_ComboUnit.InitControl(404 + offsetX, 8, 68, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_REAL || m_Profile == PROFILE_PEAK_MIX || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
m_ComboDrive.InitControl(212 + offsetX, 8, 260, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
}
|
|
else
|
|
{
|
|
m_ComboDrive.InitControl(212 + offsetX, 8, 188, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
if(m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_TestRead0.SetMargin(m_MarginDemoTop, m_MarginDemoLeft, m_MarginDemoBottom, m_MarginDemoRight, m_ZoomRatio);
|
|
m_TestWrite0.SetMargin(m_MarginDemoTop, m_MarginDemoLeft, m_MarginDemoBottom, m_MarginDemoRight, m_ZoomRatio);
|
|
|
|
#ifdef SUISHO_AOI_SUPPORT
|
|
m_TestRead0.SetLabelUnitFormat(DT_LEFT | DT_BOTTOM | DT_SINGLELINE, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE);
|
|
m_TestWrite0.SetLabelUnitFormat(DT_LEFT | DT_BOTTOM | DT_SINGLELINE, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestRead1.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestRead2.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestRead3.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
|
|
m_TestWrite0.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestWrite1.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestWrite2.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestWrite3.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
}
|
|
|
|
m_ComboCount.SetMargin(0, 4, 0, 0, m_ZoomRatio);
|
|
m_ComboSize.SetMargin (0, 4, 0, 0, m_ZoomRatio);
|
|
m_ComboDrive.SetMargin(0, 4, 0, 0, m_ZoomRatio);
|
|
m_ComboUnit.SetMargin (0, 4, 0, 0, m_ZoomRatio);
|
|
|
|
#ifdef MIX_MODE
|
|
m_TestMix0.InitControl(480 + offsetX, 60, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestMix1.InitControl(480 + offsetX, 112, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestMix2.InitControl(480 + offsetX, 164, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_TestMix3.InitControl(480 + offsetX, 216, 192, 48, m_ZoomRatio, m_hPal, &m_BkDC, IP(L"Meter"), 2, SS_RIGHT, OwnerDrawImage, m_bHighContrast, FALSE, FALSE);
|
|
m_ComboMix.InitControl(480 + offsetX, 8, 192, 300, m_ZoomRatio, &m_BkDC, NULL, 0, ES_LEFT, OwnerDrawGlass, m_bHighContrast, FALSE, m_ComboBk, m_ComboBkSelected, m_Glass, m_GlassAlpha);
|
|
m_MixUnit.InitControl(480 + offsetX, 36, 192, 24, m_ZoomRatio, m_hPal, &m_BkDC, NULL, 0, SS_CENTER, OwnerDrawTransparent, m_bHighContrast, FALSE, FALSE);
|
|
|
|
m_TestMix0.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestMix1.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestMix2.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_TestMix3.SetMargin(m_MarginMeterTop, m_MarginMeterLeft, m_MarginMeterBottom, m_MarginMeterRight, m_ZoomRatio);
|
|
m_ComboMix.SetMargin(0, 4, 0, 0, m_ZoomRatio);
|
|
|
|
if (m_MixMode)
|
|
{
|
|
m_TestMix0.ShowWindow(SW_SHOW);
|
|
m_TestMix1.ShowWindow(SW_SHOW);
|
|
m_TestMix2.ShowWindow(SW_SHOW);
|
|
m_TestMix3.ShowWindow(SW_SHOW);
|
|
m_ComboMix.ShowWindow(SW_SHOW);
|
|
m_MixUnit.ShowWindow(SW_SHOW);
|
|
}
|
|
else
|
|
{
|
|
m_TestMix0.ShowWindow(SW_HIDE);
|
|
m_TestMix1.ShowWindow(SW_HIDE);
|
|
m_TestMix2.ShowWindow(SW_HIDE);
|
|
m_TestMix3.ShowWindow(SW_HIDE);
|
|
m_ComboMix.ShowWindow(SW_HIDE);
|
|
m_MixUnit.ShowWindow(SW_HIDE);
|
|
}
|
|
#endif
|
|
|
|
m_Comment.Adjust();
|
|
|
|
UpdateScore();
|
|
|
|
Invalidate();
|
|
|
|
m_ComboCount.ShowWindow(SW_HIDE);
|
|
m_ComboSize.ShowWindow(SW_HIDE);
|
|
m_ComboDrive.ShowWindow(SW_HIDE);
|
|
|
|
COMBOBOXINFO info = { 0 };
|
|
info.cbSize = sizeof(COMBOBOXINFO);
|
|
m_ComboCount.GetComboBoxInfo(&info);
|
|
SetLayeredWindow(info.hwndList, m_ComboAlpha);
|
|
m_ComboSize.GetComboBoxInfo(&info);
|
|
SetLayeredWindow(info.hwndList, m_ComboAlpha);
|
|
m_ComboDrive.GetComboBoxInfo(&info);
|
|
SetLayeredWindow(info.hwndList, m_ComboAlpha);
|
|
m_ComboUnit.GetComboBoxInfo(&info);
|
|
SetLayeredWindow(info.hwndList, m_ComboAlpha);
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
m_ComboMix.GetComboBoxInfo(&info);
|
|
SetLayeredWindow(info.hwndList, m_ComboAlpha);
|
|
m_ComboMix.ShowWindow(SW_SHOW);
|
|
}
|
|
#endif
|
|
|
|
m_ComboCount.ShowWindow(SW_SHOW);
|
|
m_ComboSize.ShowWindow(SW_SHOW);
|
|
m_ComboDrive.ShowWindow(SW_SHOW);
|
|
|
|
if (m_Profile != PROFILE_DEFAULT && m_Profile != PROFILE_DEFAULT_MIX && m_Profile != PROFILE_DEMO)
|
|
{
|
|
m_ComboUnit.ShowWindow(SW_HIDE);
|
|
}
|
|
else
|
|
{
|
|
m_ComboUnit.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
UpdateComboTooltip();
|
|
|
|
ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
void CDiskMarkDlg::UpdateComboTooltip()
|
|
{
|
|
m_ComboCount.SetToolTipText(i18n(L"Title", L"TEST_COUNT"));
|
|
m_ComboSize.SetToolTipText(i18n(L"Title", L"TEST_SIZE"));
|
|
m_ComboUnit.SetToolTipText(i18n(L"Title", L"TEST_UNIT"));
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
m_ComboMix.SetToolTipText(i18n(L"Title", L"TEST_MIX"));
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void CDiskMarkDlg::SetLayeredWindow(HWND hWnd, BYTE alpha)
|
|
{
|
|
if (IsWin2k()) { return; }
|
|
|
|
::SetWindowLong(hWnd, GWL_EXSTYLE, ::GetWindowLong(hWnd, GWL_EXSTYLE) ^ WS_EX_LAYERED);
|
|
::SetWindowLong(hWnd, GWL_EXSTYLE, ::GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
|
|
if (m_bHighContrast)
|
|
{
|
|
::SetLayeredWindowAttributes(hWnd, 0, 255, LWA_ALPHA);
|
|
}
|
|
else
|
|
{
|
|
::SetLayeredWindowAttributes(hWnd, 0, alpha, LWA_ALPHA);
|
|
}
|
|
}
|
|
|
|
|
|
void CDiskMarkDlg::SetControlFont()
|
|
{
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
BYTE textAlpha = 255;
|
|
COLORREF textColor = RGB(0, 0, 0);
|
|
#else
|
|
BYTE textAlpha = 255;
|
|
COLORREF textColor = RGB(0, 0, 0);
|
|
#endif
|
|
|
|
#ifdef SUISHO_SHIZUKU_SUPPORT
|
|
m_ButtonAll.SetFontEx(m_FontFace, 20, 20, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest0.SetFontEx(m_FontFace, 20, 20, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest1.SetFontEx(m_FontFace, 20, 20, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest2.SetFontEx(m_FontFace, 20, 20, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest3.SetFontEx(m_FontFace, 20, 20, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_TestRead0.SetFontEx(m_FontFace, 80, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite0.SetFontEx(m_FontFace,80, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite0.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
}
|
|
|
|
m_TestRead1.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestRead2.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestRead3.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_TestWrite1.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite2.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite3.SetFontEx(m_FontFace, 52, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_Comment.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_EditText, FW_BOLD, m_FontRender);
|
|
|
|
m_ReadUnit.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_LabelText, FW_BOLD, m_FontRender);
|
|
m_WriteUnit.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_LabelText, FW_BOLD, m_FontRender);
|
|
m_DemoSetting.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_ComboCount.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboSize.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboDrive.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboUnit.SetFontEx(m_FontFace, 28, 28, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
|
|
m_ButtonTest0.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest1.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest2.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest3.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
|
|
m_ComboCount.SetItemHeightAll(40, m_ZoomRatio, m_FontRatio);
|
|
m_ComboSize.SetItemHeightAll(40, m_ZoomRatio, m_FontRatio);
|
|
m_ComboDrive.SetItemHeightAll(40, m_ZoomRatio, m_FontRatio);
|
|
m_ComboUnit.SetItemHeightAll(40, m_ZoomRatio, m_FontRatio);
|
|
#else
|
|
m_ButtonAll.SetFontEx(m_FontFace, 12, 16, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest0.SetFontEx(m_FontFace, 12, 16, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest1.SetFontEx(m_FontFace, 12, 16, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest2.SetFontEx(m_FontFace, 12, 16, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
m_ButtonTest3.SetFontEx(m_FontFace, 12, 16, m_ZoomRatio, m_FontRatio, m_ButtonText, FW_BOLD, m_FontRender);
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_TestRead0.SetFontEx(m_FontFace, 48, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite0.SetFontEx(m_FontFace, 48, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite0.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
}
|
|
|
|
m_TestRead1.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestRead2.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestRead3.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_TestWrite1.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite2.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestWrite3.SetFontEx(m_FontFace, 35, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_Comment.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_EditText, FW_BOLD, m_FontRender);
|
|
|
|
m_ReadUnit.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_LabelText, FW_BOLD, m_FontRender);
|
|
m_WriteUnit.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_LabelText, FW_BOLD, m_FontRender);
|
|
m_DemoSetting.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
|
|
m_ComboCount.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboSize.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboDrive.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboUnit.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
|
|
m_ButtonTest0.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest1.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest2.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
m_ButtonTest3.SetMargin(m_MarginButtonTop, m_MarginButtonLeft, m_MarginButtonBottom, m_MarginButtonRight, m_ZoomRatio);
|
|
|
|
m_ComboCount.SetItemHeightAll(24, m_ZoomRatio, m_FontRatio);
|
|
m_ComboSize.SetItemHeightAll(24, m_ZoomRatio, m_FontRatio);
|
|
m_ComboDrive.SetItemHeightAll(24, m_ZoomRatio, m_FontRatio);
|
|
m_ComboUnit.SetItemHeightAll(24, m_ZoomRatio, m_FontRatio);
|
|
|
|
#ifdef MIX_MODE
|
|
if(m_MixMode)
|
|
{
|
|
m_ComboMix.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_ComboText, m_ComboTextSelected, FW_NORMAL, m_FontRender);
|
|
m_ComboMix.SetItemHeightAll(24, m_ZoomRatio, m_FontRatio);
|
|
|
|
m_MixUnit.SetFontEx(m_FontFace, 16, 16, m_ZoomRatio, m_FontRatio, m_LabelText, FW_BOLD, m_FontRender);
|
|
|
|
m_TestMix0.SetFontEx(m_FontFace, 35, 35, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestMix1.SetFontEx(m_FontFace, 35, 35, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestMix2.SetFontEx(m_FontFace, 35, 35, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
m_TestMix3.SetFontEx(m_FontFace, 35, 35, m_ZoomRatio, m_FontRatio, m_MeterText, FW_BOLD, m_FontRender);
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
void CDiskMarkDlg::UpdateQueuesThreads()
|
|
{
|
|
CString cstr;
|
|
|
|
int type[9] = { 0, 0, 1, 1, 0, 1, 0, 1, 0 };
|
|
int size[9] = { 1024, 1024, 4, 4, 1024, 4, 1024, 4, 1024 };
|
|
int queues[9] = { 8, 1, 32, 1, 8, 32, 1, 1, 8 };
|
|
int threads[9] ={ 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
|
int measureTimes[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 60 };
|
|
int intervalTimes[10] = { 0, 1, 3, 5, 10, 30, 60, 180, 300, 600 };
|
|
|
|
for (int i = 0; i < 9; i++)
|
|
{
|
|
cstr.Format(L"BenchType%d", i);
|
|
m_BenchType[i] = GetPrivateProfileInt(L"Setting", cstr, type[i], m_Ini);
|
|
if (m_BenchType[i] < 0 || m_BenchSize[i] > 1) { m_BenchSize[i] = type[i]; }
|
|
|
|
cstr.Format(L"BenchSize%d", i);
|
|
m_BenchSize[i] = GetPrivateProfileInt(L"Setting", cstr, size[i], m_Ini);
|
|
if (m_BenchSize[i] <= 0 || m_BenchSize[i] > 8192) { m_BenchSize[i] = size[i]; }
|
|
|
|
cstr.Format(L"BenchQueues%d", i);
|
|
m_BenchQueues[i] = GetPrivateProfileInt(L"Setting", cstr,queues[i], m_Ini);
|
|
if (m_BenchQueues[i] <= 0 || m_BenchQueues[i] > MAX_QUEUES) { m_BenchQueues[i] = queues[i]; }
|
|
|
|
cstr.Format(L"BenchThreads%d", i);
|
|
m_BenchThreads[i] = GetPrivateProfileInt(L"Setting", cstr, threads[i], m_Ini);
|
|
if (m_BenchThreads[i] <= 0 || m_BenchThreads[i] > MAX_THREADS) { m_BenchThreads[i] = threads[i]; }
|
|
}
|
|
|
|
m_TestData = GetPrivateProfileInt(L"Setting", L"TestData", TEST_DATA_RANDOM, m_Ini);
|
|
if (m_TestData < 0 || m_TestData > 1)
|
|
{
|
|
m_TestData = TEST_DATA_RANDOM;
|
|
}
|
|
SetWindowTitle(L"");
|
|
|
|
BOOL bMeasureflag = FALSE;
|
|
m_MeasureTime = GetPrivateProfileInt(L"Setting", L"MeasureTime", 5, m_Ini);
|
|
for (int i = 0; i < 13; i++)
|
|
{
|
|
if (m_MeasureTime == measureTimes[i])
|
|
{
|
|
bMeasureflag = TRUE;
|
|
}
|
|
}
|
|
if (! bMeasureflag)
|
|
{
|
|
m_MeasureTime = 5;
|
|
}
|
|
|
|
BOOL bIntervalFlag = FALSE;
|
|
m_IntervalTime = GetPrivateProfileInt(L"Setting", L"IntervalTime", 5, m_Ini);
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
if (m_IntervalTime == intervalTimes[i])
|
|
{
|
|
bIntervalFlag = TRUE;
|
|
}
|
|
}
|
|
if (! bIntervalFlag)
|
|
{
|
|
m_IntervalTime = 5;
|
|
}
|
|
|
|
CheckRadioPresetMode();
|
|
}
|
|
|
|
void CDiskMarkDlg::SettingsQueuesThreads(int type)
|
|
{
|
|
CString key, value;
|
|
CString cstr;
|
|
|
|
switch (type)
|
|
{
|
|
case 0:// Default
|
|
{
|
|
int type[9] = { 0, 0, 1, 1, 0, 1, 0, 1, 0 };
|
|
int size[9] = { 1024, 1024, 4, 4, 1024, 4, 1024, 4, 1024 };
|
|
int queues[9] = { 8, 1, 32, 1, 8, 32, 1, 1, 8 };
|
|
int threads[9] ={ 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
|
|
|
for (int i = 0; i < 9; i++)
|
|
{
|
|
key.Format(L"BenchType%d", i); value.Format(L"%d", type[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchSize%d", i); value.Format(L"%d", size[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchQueues%d", i); value.Format(L"%d",queues[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchThreads%d", i); value.Format(L"%d", threads[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
}
|
|
WritePrivateProfileString(L"Setting", L"Affinity", L"1", m_Ini);
|
|
}
|
|
m_MeasureTime = 5; cstr.Format(L"%d", m_MeasureTime);
|
|
WritePrivateProfileString(L"Setting", L"MeasureTime", cstr, m_Ini);
|
|
m_IntervalTime = 5; cstr.Format(L"%d", m_IntervalTime);
|
|
WritePrivateProfileString(L"Setting", L"IntervalTime", cstr, m_Ini);
|
|
UpdateQueuesThreads();
|
|
ChangeButtonStatus(TRUE);
|
|
break;
|
|
case 1: // NVMe SSD Ver.8
|
|
{
|
|
int type[9] = { 0, 0, 1, 1, 0, 1, 0, 1, 0 };
|
|
int size[9] = { 1024, 128, 4, 4, 1024, 4, 1024, 4, 1024 };
|
|
int queues[9] = { 8, 32, 32, 1, 8, 32, 1, 1, 8 };
|
|
int threads[9] = { 1, 1, 16, 1, 1, 16, 1, 1, 1 };
|
|
for (int i = 0; i < 9; i++)
|
|
{
|
|
key.Format(L"BenchType%d", i); value.Format(L"%d", type[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchSize%d", i); value.Format(L"%d", size[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchQueues%d", i); value.Format(L"%d", queues[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchThreads%d", i); value.Format(L"%d", threads[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
}
|
|
WritePrivateProfileString(L"Setting", L"Affinity", L"1", m_Ini);
|
|
}
|
|
m_MeasureTime = 5; cstr.Format(L"%d", m_MeasureTime);
|
|
WritePrivateProfileString(L"Setting", L"MeasureTime", cstr, m_Ini);
|
|
m_IntervalTime = 5; cstr.Format(L"%d", m_IntervalTime);
|
|
WritePrivateProfileString(L"Setting", L"IntervalTime", cstr, m_Ini);
|
|
UpdateQueuesThreads();
|
|
ChangeButtonStatus(TRUE);
|
|
break;
|
|
case 2: // Flash Memory
|
|
{
|
|
int type[9] = { 0, 0, 1, 1, 0, 1, 0, 1, 0 };
|
|
int size[9] = { 1024, 1024, 4, 4, 1024, 4, 1024, 4, 1024 };
|
|
int queues[9] = { 8, 1, 32, 1, 8, 32, 1, 1, 8 };
|
|
int threads[9] ={ 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
|
for (int i = 0; i < 9; i++)
|
|
{
|
|
key.Format(L"BenchType%d", i); value.Format(L"%d", type[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchSize%d", i); value.Format(L"%d", size[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchQueues%d", i); value.Format(L"%d", queues[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
key.Format(L"BenchThreads%d", i); value.Format(L"%d", threads[i]);
|
|
WritePrivateProfileString(L"Setting", key, value, m_Ini);
|
|
}
|
|
WritePrivateProfileString(L"Setting", L"Affinity", L"1", m_Ini);
|
|
}
|
|
m_MeasureTime = 1; cstr.Format(L"%d", m_MeasureTime);
|
|
WritePrivateProfileString(L"Setting", L"MeasureTime", cstr, m_Ini);
|
|
m_IntervalTime = 30; cstr.Format(L"%d", m_IntervalTime);
|
|
WritePrivateProfileString(L"Setting", L"IntervalTime", cstr, m_Ini);
|
|
UpdateQueuesThreads();
|
|
ChangeButtonStatus(TRUE);
|
|
break;
|
|
default:
|
|
OnSettingsQueuesThreads();
|
|
break;
|
|
}
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
if( 0 != ::TranslateAccelerator(m_hWnd, m_hAccelerator, pMsg) )
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
|
|
#include <shlobj.h> // Typical Shell header file
|
|
|
|
INT_PTR CALLBACK BrowseCallbackProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
|
{
|
|
switch (uMsg)
|
|
{
|
|
case BFFM_INITIALIZED:
|
|
if (lpData != NULL)
|
|
{
|
|
::SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lpData);
|
|
}
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void CDiskMarkDlg::SelectDrive()
|
|
{
|
|
CString cstr;
|
|
if (m_DiskBenchStatus)
|
|
{
|
|
return ;
|
|
}
|
|
|
|
int previousComboDriveIndex = m_IndexTestDrive;
|
|
|
|
UpdateData(TRUE);
|
|
|
|
if (m_ComboDrive.GetCurSel() == m_MaxIndexTestDrive)
|
|
{
|
|
BROWSEINFO bi;
|
|
ZeroMemory(&bi, sizeof(BROWSEINFO));
|
|
ITEMIDLIST __unaligned *idl;
|
|
LPMALLOC g_pMalloc;
|
|
TCHAR szTmp[MAX_PATH];
|
|
|
|
HRESULT hResult = SHGetMalloc(&g_pMalloc);
|
|
if (hResult == NOERROR)
|
|
{
|
|
bi.hwndOwner = this->m_hWnd;
|
|
bi.lpfn = (BFFCALLBACK)BrowseCallbackProc;
|
|
bi.lParam = (LPARAM)m_TestTargetPath.GetString();
|
|
bi.pszDisplayName = szTmp;
|
|
bi.lpszTitle = L"";
|
|
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI | BIF_NONEWFOLDERBUTTON;
|
|
idl = SHBrowseForFolderW(&bi);
|
|
if (idl != NULL)
|
|
{
|
|
if (SHGetPathFromIDList(idl, szTmp) != FALSE)
|
|
{
|
|
WritePrivateProfileString(L"Setting", L"TargetPath", szTmp, m_Ini);
|
|
m_TestTargetPath = szTmp;
|
|
}
|
|
g_pMalloc->Free(idl);
|
|
m_ComboDrive.SetToolTipText(m_TestTargetPath);
|
|
}
|
|
else
|
|
{
|
|
m_IndexTestDrive = previousComboDriveIndex;
|
|
m_ComboDrive.SetCurSel(m_IndexTestDrive);
|
|
m_ComboDrive.SetToolTipText(i18n(L"Title", L"TEST_DRIVE"));
|
|
|
|
}
|
|
g_pMalloc->Release();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_ComboDrive.SetToolTipText(i18n(L"Title", L"TEST_DRIVE"));
|
|
}
|
|
}
|
|
|
|
|
|
LRESULT CDiskMarkDlg::OnUpdateScore(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
UpdateScore();
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CDiskMarkDlg::OnExitBenchmark(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
ChangeButtonStatus(TRUE);
|
|
EnableMenus();
|
|
|
|
return 0;
|
|
}
|
|
|
|
void CDiskMarkDlg::OnPaint()
|
|
{
|
|
if (IsIconic())
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
|
|
|
// Center icon in client rectangle
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
// Draw the icon
|
|
dc.DrawIcon(x, y, m_hIcon);
|
|
}
|
|
else
|
|
{
|
|
CMainDialogFx::OnPaint();
|
|
}
|
|
}
|
|
|
|
HCURSOR CDiskMarkDlg::OnQueryDragIcon()
|
|
{
|
|
return static_cast<HCURSOR>(m_hIcon);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnOK()
|
|
{
|
|
|
|
}
|
|
|
|
void CDiskMarkDlg::OnExit()
|
|
{
|
|
OnCancel();
|
|
}
|
|
|
|
void CDiskMarkDlg::OnAbout()
|
|
{
|
|
m_AboutDlg = new CAboutDlg(this);
|
|
m_AboutDlg->Create(CAboutDlg::IDD, m_AboutDlg, ID_ABOUT, this);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnCancel()
|
|
{
|
|
if (m_WinThread != NULL)
|
|
{
|
|
AfxMessageBox(m_MesStopBenchmark);
|
|
return;
|
|
}
|
|
|
|
UpdateData(TRUE);
|
|
CString cstr;
|
|
cstr.Format(L"%d", m_IndexTestUnit);
|
|
WritePrivateProfileString(L"Setting", L"TestUnit", cstr, m_Ini);
|
|
cstr.Format(L"%d", m_IndexTestCount);
|
|
WritePrivateProfileString(L"Setting", L"TestCount", cstr, m_Ini);
|
|
cstr.Format(L"%d", m_IndexTestSize);
|
|
WritePrivateProfileString(L"Setting", L"TestSize", cstr, m_Ini);
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
cstr.Format(L"%d", m_IndexTestMix);
|
|
WritePrivateProfileString(L"Setting", L"TestMix", cstr, m_Ini);
|
|
}
|
|
#endif
|
|
|
|
if(m_IndexTestDrive != m_MaxIndexTestDrive)
|
|
{
|
|
cstr.Format(L"%d", m_ValueTestDrive.GetAt(0) - 'A');
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%d", 99);
|
|
}
|
|
WritePrivateProfileString(L"Setting", L"DriveLetter", cstr, m_Ini);
|
|
|
|
CMainDialogFx::OnCancel();
|
|
}
|
|
|
|
void CDiskMarkDlg::InitScore()
|
|
{
|
|
for (int i = 0; i < 9; i++)
|
|
{
|
|
m_ReadScore[i] = 0.0;
|
|
m_ReadLatency[i] = 0.0;
|
|
m_WriteScore[i] = 0.0;
|
|
m_WriteLatency[i] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[i] = 0.0;
|
|
m_MixLatency[i] = 0.0;
|
|
#endif
|
|
}
|
|
|
|
UpdateScore();
|
|
}
|
|
|
|
void CDiskMarkDlg::UpdateScore()
|
|
{
|
|
UpdateData(TRUE);
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
SetMeter(&m_TestRead0, m_ReadScore[8], m_ReadLatency[8], m_BenchSize[8] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestWrite0, m_WriteScore[8], m_WriteLatency[8], m_BenchSize[8] * 1024, m_IndexTestUnit);
|
|
}
|
|
else if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
SetMeter(&m_TestRead0, m_ReadScore[4], m_ReadLatency[4], m_BenchSize[4] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestRead1, m_ReadScore[5], m_ReadLatency[5], m_BenchSize[5] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestRead2, m_ReadScore[5], m_ReadLatency[5], m_BenchSize[5] * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestRead3, m_ReadScore[5], m_ReadLatency[5], m_BenchSize[5] * 1024, SCORE_US);
|
|
SetMeter(&m_TestWrite0, m_WriteScore[4], m_WriteLatency[4], m_BenchSize[4] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestWrite1, m_WriteScore[5], m_WriteLatency[5], m_BenchSize[5] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestWrite2, m_WriteScore[5], m_WriteLatency[5], m_BenchSize[5] * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestWrite3, m_WriteScore[5], m_WriteLatency[5], m_BenchSize[5] * 1024, SCORE_US);
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
SetMeter(&m_TestMix0, m_MixScore[4], m_MixLatency[4], m_BenchSize[4] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestMix1, m_MixScore[5], m_MixLatency[5], m_BenchSize[5] * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestMix2, m_MixScore[5], m_MixLatency[5], m_BenchSize[5] * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestMix3, m_MixScore[5], m_MixLatency[5], m_BenchSize[5] * 1024, SCORE_US);
|
|
}
|
|
#endif
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
SetMeter(&m_TestRead0, m_ReadScore[6], m_ReadLatency[6], 1024 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestRead1, m_ReadScore[7], m_ReadLatency[7], 4 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestRead2, m_ReadScore[7], m_ReadLatency[7], 4 * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestRead3, m_ReadScore[7], m_ReadLatency[7], 4 * 1024, SCORE_US);
|
|
SetMeter(&m_TestWrite0, m_WriteScore[6], m_WriteLatency[6], 1024 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestWrite1, m_WriteScore[7], m_WriteLatency[7], 4 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestWrite2, m_WriteScore[7], m_WriteLatency[7], 4 * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestWrite3, m_WriteScore[7], m_WriteLatency[7], 4 * 1024, SCORE_US);
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
SetMeter(&m_TestMix0, m_MixScore[6], m_MixLatency[6], 1024 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestMix1, m_MixScore[7], m_MixLatency[7], 4 * 1024, SCORE_MBS);
|
|
SetMeter(&m_TestMix2, m_MixScore[7], m_MixLatency[7], 4 * 1024, SCORE_IOPS);
|
|
SetMeter(&m_TestMix3, m_MixScore[7], m_MixLatency[7], 4 * 1024, SCORE_US);
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
SetMeter(&m_TestRead0, m_ReadScore[0], m_ReadLatency[0], m_BenchSize[0] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestRead1, m_ReadScore[1], m_ReadLatency[1], m_BenchSize[1] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestRead2, m_ReadScore[2], m_ReadLatency[2], m_BenchSize[2] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestRead3, m_ReadScore[3], m_ReadLatency[3], m_BenchSize[3] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestWrite0, m_WriteScore[0], m_WriteLatency[0], m_BenchSize[0] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestWrite1, m_WriteScore[1], m_WriteLatency[1], m_BenchSize[1] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestWrite2, m_WriteScore[2], m_WriteLatency[2], m_BenchSize[2] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestWrite3, m_WriteScore[3], m_WriteLatency[3], m_BenchSize[3] * 1024, m_IndexTestUnit);
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
SetMeter(&m_TestMix0, m_MixScore[0], m_MixLatency[0], m_BenchSize[0] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestMix1, m_MixScore[1], m_MixLatency[1], m_BenchSize[1] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestMix2, m_MixScore[2], m_MixLatency[2], m_BenchSize[2] * 1024, m_IndexTestUnit);
|
|
SetMeter(&m_TestMix3, m_MixScore[3], m_MixLatency[3], m_BenchSize[3] * 1024, m_IndexTestUnit);
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::SetScoreToolTip(CStaticFx* control, double score, double latency, int blockSize)
|
|
{
|
|
CString cstr;
|
|
if (blockSize == -1)
|
|
{
|
|
cstr.Format(L"%.3f MB/s\r\n%.3f GB/s", score, score / 1000);
|
|
}
|
|
else if (score <= 0.0)
|
|
{
|
|
cstr.Format(L"%.3f MB/s\r\n%.3f GB/s\r\n%.3f IOPS\r\n%.3f μs", 0.0, 0.0, 0.0, 0.0);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.3f MB/s\r\n%.3f GB/s\r\n%.3f IOPS\r\n%.3f μs", score, score / 1000, score * 1000 * 1000 / blockSize, latency);
|
|
}
|
|
control->SetToolTipText(cstr);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSequentialPeak()
|
|
{
|
|
if (m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[4] = 0.0;
|
|
m_WriteScore[4] = 0.0;
|
|
m_ReadLatency[4] = 0.0;
|
|
m_WriteLatency[4] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[4] = 0.0;
|
|
m_MixLatency[4] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench4, (void*)this);
|
|
if (m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnRandomPeak()
|
|
{
|
|
if (m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[5] = 0.0;
|
|
m_WriteScore[5] = 0.0;
|
|
m_ReadLatency[5] = 0.0;
|
|
m_WriteLatency[5] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[5] = 0.0;
|
|
m_MixLatency[5] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench5, (void*)this);
|
|
if (m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSequentialReal()
|
|
{
|
|
if (m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[6] = 0.0;
|
|
m_WriteScore[6] = 0.0;
|
|
m_ReadLatency[6] = 0.0;
|
|
m_WriteLatency[6] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[6] = 0.0;
|
|
m_MixLatency[6] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench6, (void*)this);
|
|
if (m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnRandomReal()
|
|
{
|
|
if (m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[7] = 0.0;
|
|
m_WriteScore[7] = 0.0;
|
|
m_ReadLatency[7] = 0.0;
|
|
m_WriteLatency[7] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[7] = 0.0;
|
|
m_MixLatency[7] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench7, (void*)this);
|
|
if (m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnTest0()
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
OnSequentialPeak();
|
|
return;
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
OnSequentialReal();
|
|
return;
|
|
}
|
|
|
|
if(m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[0] = 0.0;
|
|
m_WriteScore[0] = 0.0;
|
|
m_ReadLatency[0] = 0.0;
|
|
m_WriteLatency[0] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[0] = 0.0;
|
|
m_MixLatency[0] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench0, (void*)this);
|
|
if(m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnTest1()
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
OnRandomPeak();
|
|
return;
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
OnRandomReal();
|
|
return;
|
|
}
|
|
|
|
if (m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[1] = 0.0;
|
|
m_WriteScore[1] = 0.0;
|
|
m_ReadLatency[1] = 0.0;
|
|
m_WriteLatency[1] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[1] = 0.0;
|
|
m_MixLatency[1] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench1, (void*)this);
|
|
if (m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnTest2()
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
OnRandomPeak();
|
|
return;
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
OnRandomReal();
|
|
return;
|
|
}
|
|
|
|
if(m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[2] = 0.0;
|
|
m_WriteScore[2] = 0.0;
|
|
m_ReadLatency[2] = 0.0;
|
|
m_WriteLatency[2] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[2] = 0.0;
|
|
m_MixLatency[2] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench2, (void*)this);
|
|
if(m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnTest3()
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
OnRandomPeak();
|
|
return;
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
OnRandomReal();
|
|
return;
|
|
}
|
|
|
|
if(m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ReadScore[3] = 0.0;
|
|
m_WriteScore[3] = 0.0;
|
|
m_ReadLatency[3] = 0.0;
|
|
m_WriteLatency[3] = 0.0;
|
|
#ifdef MIX_MODE
|
|
m_MixScore[3] = 0.0;
|
|
m_MixLatency[3] = 0.0;
|
|
#endif
|
|
UpdateScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
m_WinThread = AfxBeginThread(ExecDiskBench3, (void*)this);
|
|
if(m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnAll()
|
|
{
|
|
if(m_WinThread == NULL)
|
|
{
|
|
UpdateData(TRUE);
|
|
InitScore();
|
|
m_DiskBenchStatus = TRUE;
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_WinThread = AfxBeginThread(ExecDiskBenchAllDemo, (void*)this);
|
|
}
|
|
else if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
m_WinThread = AfxBeginThread(ExecDiskBenchAllPeak, (void*)this);
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
m_WinThread = AfxBeginThread(ExecDiskBenchAllReal, (void*)this);
|
|
}
|
|
else
|
|
{
|
|
m_WinThread = AfxBeginThread(ExecDiskBenchAll, (void*)this);
|
|
}
|
|
|
|
if(m_WinThread == NULL)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
}
|
|
else
|
|
{
|
|
ChangeButtonStatus(FALSE);
|
|
}
|
|
DisableMenus();
|
|
}
|
|
else
|
|
{
|
|
Stop();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::Stop()
|
|
{
|
|
if(m_DiskBenchStatus)
|
|
{
|
|
m_DiskBenchStatus = FALSE;
|
|
|
|
if (pi.hProcess != NULL)
|
|
{
|
|
TerminateProcess(pi.hProcess, 0);
|
|
}
|
|
}
|
|
EnableMenus();
|
|
}
|
|
|
|
void CDiskMarkDlg::EnableMenus()
|
|
{
|
|
CMenu *menu = GetMenu();
|
|
menu->EnableMenuItem(0, MF_BYPOSITION | MF_ENABLED);
|
|
menu->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
|
|
menu->EnableMenuItem(2, MF_BYPOSITION | MF_ENABLED);
|
|
menu->EnableMenuItem(3, MF_BYPOSITION | MF_ENABLED);
|
|
menu->EnableMenuItem(4, MF_BYPOSITION | MF_ENABLED);
|
|
menu->EnableMenuItem(5, MF_BYPOSITION | MF_ENABLED);
|
|
SetMenu(menu);
|
|
}
|
|
|
|
void CDiskMarkDlg::DisableMenus()
|
|
{
|
|
CMenu *menu = GetMenu();
|
|
menu->EnableMenuItem(0, MF_BYPOSITION | MF_GRAYED);
|
|
menu->EnableMenuItem(1, MF_BYPOSITION | MF_GRAYED);
|
|
menu->EnableMenuItem(2, MF_BYPOSITION | MF_GRAYED);
|
|
menu->EnableMenuItem(3, MF_BYPOSITION | MF_GRAYED);
|
|
menu->EnableMenuItem(4, MF_BYPOSITION | MF_GRAYED);
|
|
menu->EnableMenuItem(5, MF_BYPOSITION | MF_GRAYED);
|
|
SetMenu(menu);
|
|
}
|
|
|
|
CString CDiskMarkDlg::GetButtonText(int type, int size, int queues, int threads, int unit)
|
|
{
|
|
CString text;
|
|
|
|
if (size >= 1024)
|
|
{
|
|
if (type == BENCH_RND)
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX || m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
if (unit == SCORE_IOPS)
|
|
{
|
|
text.Format(L"RND%dM\r\n(IOPS)", size / 1024);
|
|
}
|
|
else if (unit == SCORE_US)
|
|
{
|
|
text.Format(L"RND%dM\r\n(μs)", size / 1024);
|
|
}
|
|
else if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"RND%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"RND%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"RND%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"RND%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"SEQ%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"SEQ%dM\r\nQ%dT%d", size / 1024, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (type == BENCH_RND)
|
|
{
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX || m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
if (unit == SCORE_IOPS)
|
|
{
|
|
text.Format(L"RND%dK\r\n(IOPS)", size);
|
|
}
|
|
else if (unit == SCORE_US)
|
|
{
|
|
text.Format(L"RND%dK\r\n(μs)", size);
|
|
}
|
|
else if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"RND%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"RND%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"RND%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"RND%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"SEQ%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"SEQ%dK\r\nQ%dT%d", size, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
|
|
return text;
|
|
}
|
|
|
|
CString CDiskMarkDlg::GetButtonToolTipText(int type, int size, int queues, int threads, int unit)
|
|
{
|
|
CString text;
|
|
|
|
if (size >= 1024)
|
|
{
|
|
if (type == BENCH_RND)
|
|
{
|
|
if (unit == SCORE_IOPS)
|
|
{
|
|
text.Format(L"Random %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(IOPS)", size / 1024, queues, threads);
|
|
}
|
|
else if (unit == SCORE_US)
|
|
{
|
|
text.Format(L"Random %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(μs)", size / 1024, queues, threads);
|
|
}
|
|
else if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"Random %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(GB/s)", size / 1024, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"Random %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(MB/s)", size / 1024, queues, threads);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"Sequential %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(GB/s)", size / 1024, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"Sequential %dMiB\r\nQueues=%d\r\nThreads=%d\r\n(MB/s)", size / 1024, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (type == BENCH_RND)
|
|
{
|
|
if (unit == SCORE_IOPS)
|
|
{
|
|
text.Format(L"Random %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(IOPS)", size, queues, threads);
|
|
}
|
|
else if (unit == SCORE_US)
|
|
{
|
|
text.Format(L"Random %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(μs)", size, queues, threads);
|
|
}
|
|
else if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"Random %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(GB/s)", size, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"Random %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(MB/s)", size, queues, threads);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (unit == SCORE_GBS)
|
|
{
|
|
text.Format(L"Sequential %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(GB/s)", size, queues, threads);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"Sequential %dKiB\r\nQueues=%d\r\nThreads=%d\r\n(MB/s)", size, queues, threads);
|
|
}
|
|
}
|
|
}
|
|
|
|
return text;
|
|
}
|
|
|
|
void CDiskMarkDlg::ChangeButtonStatus(BOOL status)
|
|
{
|
|
if(status)
|
|
{
|
|
CString title;
|
|
CString toolTip;
|
|
|
|
#ifdef MIX_MODE
|
|
m_ComboMix.EnableWindow(TRUE);
|
|
#endif
|
|
m_ComboCount.EnableWindow(TRUE);
|
|
m_ComboSize.EnableWindow(TRUE);
|
|
m_ComboDrive.EnableWindow(TRUE);
|
|
m_ComboUnit.EnableWindow(TRUE);
|
|
|
|
CString cstr;
|
|
if (m_MeasureTime == 5)
|
|
{
|
|
cstr.Format(L"All");
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"All\n%dsec", m_MeasureTime);
|
|
}
|
|
|
|
m_ButtonAll.SetWindowTextW(cstr);
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
m_ButtonTest0.ShowWindow(SW_HIDE);
|
|
m_ButtonTest1.ShowWindow(SW_HIDE);
|
|
m_ButtonTest2.ShowWindow(SW_HIDE);
|
|
m_ButtonTest3.ShowWindow(SW_HIDE);
|
|
|
|
CString text, type;
|
|
if (m_BenchType[8] == BENCH_SEQ)
|
|
{
|
|
type = L"SEQ";
|
|
}
|
|
else
|
|
{
|
|
type = L"RND";
|
|
}
|
|
if (m_BenchSize[8] > 1000)
|
|
{
|
|
text.Format(L"%s %dMiB, Q=%d, T=%d", type.GetString(), m_BenchSize[8] / 1024, m_BenchQueues[8], m_BenchThreads[8]);
|
|
}
|
|
else
|
|
{
|
|
text.Format(L"%s %dKiB, Q=%d, T=%d", type.GetString(), m_BenchSize[8], m_BenchQueues[8], m_BenchThreads[8]);
|
|
}
|
|
|
|
m_DemoSetting.SetWindowTextW(text);
|
|
}
|
|
else if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
m_ButtonTest0.ShowWindow(SW_SHOW);
|
|
m_ButtonTest1.ShowWindow(SW_SHOW);
|
|
m_ButtonTest2.ShowWindow(SW_SHOW);
|
|
m_ButtonTest3.ShowWindow(SW_SHOW);
|
|
|
|
m_ButtonTest0.SetWindowTextW(GetButtonText(BENCH_SEQ, m_BenchSize[4], m_BenchQueues[4], m_BenchThreads[4], SCORE_MBS));
|
|
m_ButtonTest1.SetWindowTextW(GetButtonText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_MBS));
|
|
m_ButtonTest2.SetWindowTextW(GetButtonText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_IOPS));
|
|
m_ButtonTest3.SetWindowTextW(GetButtonText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_US));
|
|
|
|
m_ButtonTest0.SetToolTipText(GetButtonToolTipText(BENCH_SEQ, m_BenchSize[4], m_BenchQueues[4], m_BenchThreads[4], SCORE_MBS));
|
|
m_ButtonTest1.SetToolTipText(GetButtonToolTipText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_MBS));
|
|
m_ButtonTest2.SetToolTipText(GetButtonToolTipText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_IOPS));
|
|
m_ButtonTest3.SetToolTipText(GetButtonToolTipText(BENCH_RND, m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5], SCORE_US));
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
m_ButtonTest0.ShowWindow(SW_SHOW);
|
|
m_ButtonTest1.ShowWindow(SW_SHOW);
|
|
m_ButtonTest2.ShowWindow(SW_SHOW);
|
|
m_ButtonTest3.ShowWindow(SW_SHOW);
|
|
|
|
m_ButtonTest0.SetWindowTextW(GetButtonText(BENCH_SEQ, 1024, 1, 1, SCORE_MBS));
|
|
m_ButtonTest1.SetWindowTextW(GetButtonText(BENCH_RND, 4, 1, 1, SCORE_MBS));
|
|
m_ButtonTest2.SetWindowTextW(GetButtonText(BENCH_RND, 4, 1, 1, SCORE_IOPS));
|
|
m_ButtonTest3.SetWindowTextW(GetButtonText(BENCH_RND, 4, 1, 1, SCORE_US));
|
|
|
|
m_ButtonTest0.SetToolTipText(GetButtonToolTipText(BENCH_SEQ, 1024, 1, 1, SCORE_MBS));
|
|
m_ButtonTest1.SetToolTipText(GetButtonToolTipText(BENCH_RND, 4, 1, 1, SCORE_MBS));
|
|
m_ButtonTest2.SetToolTipText(GetButtonToolTipText(BENCH_RND, 4, 1, 1, SCORE_IOPS));
|
|
m_ButtonTest3.SetToolTipText(GetButtonToolTipText(BENCH_RND, 4, 1, 1, SCORE_US));
|
|
}
|
|
else
|
|
{
|
|
m_ButtonTest0.ShowWindow(SW_SHOW);
|
|
m_ButtonTest1.ShowWindow(SW_SHOW);
|
|
m_ButtonTest2.ShowWindow(SW_SHOW);
|
|
m_ButtonTest3.ShowWindow(SW_SHOW);
|
|
|
|
m_ButtonTest0.SetWindowTextW(GetButtonText(m_BenchType[0], m_BenchSize[0], m_BenchQueues[0], m_BenchThreads[0], m_IndexTestUnit));
|
|
m_ButtonTest1.SetWindowTextW(GetButtonText(m_BenchType[1], m_BenchSize[1], m_BenchQueues[1], m_BenchThreads[1], m_IndexTestUnit));
|
|
m_ButtonTest2.SetWindowTextW(GetButtonText(m_BenchType[2], m_BenchSize[2], m_BenchQueues[2], m_BenchThreads[2], m_IndexTestUnit));
|
|
m_ButtonTest3.SetWindowTextW(GetButtonText(m_BenchType[3], m_BenchSize[3], m_BenchQueues[3], m_BenchThreads[3], m_IndexTestUnit));
|
|
|
|
m_ButtonTest0.SetToolTipText(GetButtonToolTipText(m_BenchType[0], m_BenchSize[0], m_BenchQueues[0], m_BenchThreads[0], m_IndexTestUnit));
|
|
m_ButtonTest1.SetToolTipText(GetButtonToolTipText(m_BenchType[1], m_BenchSize[1], m_BenchQueues[1], m_BenchThreads[1], m_IndexTestUnit));
|
|
m_ButtonTest2.SetToolTipText(GetButtonToolTipText(m_BenchType[2], m_BenchSize[2], m_BenchQueues[2], m_BenchThreads[2], m_IndexTestUnit));
|
|
m_ButtonTest3.SetToolTipText(GetButtonToolTipText(m_BenchType[3], m_BenchSize[3], m_BenchQueues[3], m_BenchThreads[3], m_IndexTestUnit));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
#ifdef MIX_MODE
|
|
m_ComboMix.EnableWindow(FALSE);
|
|
#endif
|
|
m_ComboCount.EnableWindow(FALSE);
|
|
m_ComboSize.EnableWindow(FALSE);
|
|
m_ComboDrive.EnableWindow(FALSE);
|
|
m_ComboUnit.EnableWindow(FALSE);
|
|
|
|
m_ButtonAll.SetWindowTextW(L"Stop");
|
|
m_ButtonTest0.SetWindowTextW(L"Stop");
|
|
m_ButtonTest1.SetWindowTextW(L"Stop");
|
|
m_ButtonTest2.SetWindowTextW(L"Stop");
|
|
m_ButtonTest3.SetWindowTextW(L"Stop");
|
|
}
|
|
}
|
|
|
|
LRESULT CDiskMarkDlg::OnUpdateMessage(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
CString wstr = L"";
|
|
CString lstr = L"";
|
|
|
|
if(wParam != NULL)
|
|
{
|
|
wstr = *((CString*)wParam);
|
|
}
|
|
|
|
if(lParam != NULL)
|
|
{
|
|
lstr = *((CString*)lParam);
|
|
}
|
|
|
|
SetWindowTitle(wstr);
|
|
return 0;
|
|
}
|
|
|
|
void CDiskMarkDlg::SetMeter(CStaticFx* control, double score, double latency, int blockSize, int unit)
|
|
{
|
|
CString cstr;
|
|
|
|
double meterRatio = 0.0;
|
|
|
|
if (unit == SCORE_UNIT::SCORE_US)
|
|
{
|
|
if (latency > 0.0000000001)
|
|
{
|
|
meterRatio = 1 - 0.16666666666666 * log10(latency);
|
|
}
|
|
else
|
|
{
|
|
meterRatio = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (score > 0.1)
|
|
{
|
|
meterRatio = 0.16666666666666 * log10(score * 10);
|
|
}
|
|
else
|
|
{
|
|
meterRatio = 0;
|
|
}
|
|
}
|
|
|
|
if (meterRatio > 1.0)
|
|
{
|
|
meterRatio = 1.0;
|
|
}
|
|
|
|
if (unit == SCORE_UNIT::SCORE_IOPS)
|
|
{
|
|
double iops = score * 1000 * 1000 / blockSize;
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
if (iops >= 100000.0)
|
|
{
|
|
cstr.Format(L"%dk", (int)iops / 1000);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%d", (int)iops);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (iops >= 1000000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)iops);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.2f", iops);
|
|
}
|
|
}
|
|
}
|
|
else if (unit == SCORE_UNIT::SCORE_US)
|
|
{
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
if (score <= 0.0)
|
|
{
|
|
cstr.Format(L"%.1f", 0.0);
|
|
if (*control == m_TestRead0) { m_TestRead0.SetLabelUnit(L"Read", L"μs"); }
|
|
if (*control == m_TestWrite0) { m_TestWrite0.SetLabelUnit(L"Write", L"μs"); }
|
|
}
|
|
else if (latency >= 1000000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)latency / 1000);
|
|
if (*control == m_TestRead0) { m_TestRead0.SetLabelUnit(L"Read", L"ms"); }
|
|
if (*control == m_TestWrite0) { m_TestWrite0.SetLabelUnit(L"Write", L"ms"); }
|
|
}
|
|
else if (latency >= 1000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)latency);
|
|
if (*control == m_TestRead0) { m_TestRead0.SetLabelUnit(L"Read", L"μs"); }
|
|
if (*control == m_TestWrite0) { m_TestWrite0.SetLabelUnit(L"Write", L"μs"); }
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.1f", latency);
|
|
if (*control == m_TestRead0) { m_TestRead0.SetLabelUnit(L"Read", L"μs"); }
|
|
if (*control == m_TestWrite0) { m_TestWrite0.SetLabelUnit(L"Write", L"μs"); }
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (score <= 0.0)
|
|
{
|
|
cstr.Format(L"%.2f", 0.0);
|
|
}
|
|
else if (latency >= 1000000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)latency);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.2f", latency);
|
|
}
|
|
}
|
|
}
|
|
else if (unit == SCORE_UNIT::SCORE_GBS)
|
|
{
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
cstr.Format(L"%.1f", score / 1000.0);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.3f", score / 1000.0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
if (score >= 1000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)score);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.1f", score);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (score >= 1000000.0)
|
|
{
|
|
cstr.Format(L"%d", (int)score);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%.2f", score);
|
|
}
|
|
}
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
control->SetMeter(FALSE, meterRatio);
|
|
}
|
|
else
|
|
{
|
|
control->SetMeter(TRUE, meterRatio);
|
|
}
|
|
control->SetWindowTextW(cstr);
|
|
|
|
SetScoreToolTip(control, score, latency, blockSize);
|
|
}
|
|
|
|
void CDiskMarkDlg::InitDrive()
|
|
{
|
|
while (m_ComboDrive.GetCount())
|
|
{
|
|
m_ComboDrive.DeleteString(0);
|
|
}
|
|
|
|
CString cstr;
|
|
CString select;
|
|
|
|
// list up drive
|
|
TCHAR szDrives[256] = {0};
|
|
LPTSTR pDrive = szDrives;
|
|
TCHAR rootPath[4] = {0};
|
|
TCHAR fileSystem[32] = {0};
|
|
int count = 0;
|
|
GetLogicalDriveStrings(255, szDrives);
|
|
|
|
m_IndexTestDrive = 0;
|
|
m_TestDriveLetter = GetPrivateProfileInt(L"Setting", L"DriveLetter", 2, m_Ini); // Default "C:\"
|
|
|
|
while( pDrive[0] != L'\0' )
|
|
{
|
|
ULARGE_INTEGER freeBytesAvailableToCaller = {0};
|
|
ULARGE_INTEGER totalNumberOfBytes = {0};
|
|
ULARGE_INTEGER totalNumberOfFreeBytes = {0};
|
|
|
|
// _tcsupr_s(pDrive, sizeof(TCHAR) * 4);
|
|
int result = GetDriveType(pDrive);
|
|
|
|
int forward = (int)_tcslen( pDrive );
|
|
|
|
if(result == DRIVE_FIXED || result == DRIVE_REMOTE || result == DRIVE_REMOVABLE || result == DRIVE_RAMDISK)
|
|
{
|
|
pDrive[1] = L'\0';
|
|
cstr.Format(L"%C: ", pDrive[0]);
|
|
freeBytesAvailableToCaller.QuadPart = 0;
|
|
totalNumberOfBytes.QuadPart = 0;
|
|
totalNumberOfFreeBytes.QuadPart = 0;
|
|
if(GetDiskFreeSpaceEx(cstr, &freeBytesAvailableToCaller, &totalNumberOfBytes, &totalNumberOfFreeBytes) != 0)
|
|
{
|
|
select += cstr;
|
|
if(totalNumberOfBytes.QuadPart < ((ULONGLONG)8 * 1024 * 1024 * 1024)) // < 8 GB
|
|
{
|
|
cstr.Format(L"%s: %.0f%% (%.0f/%.0fMiB)", pDrive,
|
|
(double)(totalNumberOfBytes.QuadPart - totalNumberOfFreeBytes.QuadPart) / (double)totalNumberOfBytes.QuadPart * 100,
|
|
(totalNumberOfBytes.QuadPart - totalNumberOfFreeBytes.QuadPart) / 1024 / 1024.0,
|
|
totalNumberOfBytes.QuadPart / 1024 / 1024.0);
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%s: %.0f%% (%.0f/%.0fGiB)", pDrive,
|
|
(double)(totalNumberOfBytes.QuadPart - totalNumberOfFreeBytes.QuadPart) / (double)totalNumberOfBytes.QuadPart * 100,
|
|
(totalNumberOfBytes.QuadPart - totalNumberOfFreeBytes.QuadPart) / 1024 / 1024 / 1024.0,
|
|
totalNumberOfBytes.QuadPart / 1024 / 1024 / 1024.0);
|
|
}
|
|
select += cstr;
|
|
|
|
if(m_TestDriveLetter == pDrive[0] - 'A')
|
|
{
|
|
m_IndexTestDrive = count;
|
|
}
|
|
count++;
|
|
|
|
m_ComboDrive.AddString(cstr);
|
|
}
|
|
}
|
|
pDrive += forward + 1;
|
|
}
|
|
|
|
m_ComboDrive.AddString(i18n(L"Menu", L"SELECT_FOLDER"));
|
|
|
|
TCHAR str[256];
|
|
GetPrivateProfileString(L"Setting", L"TargetPath", L"", str, 256, m_Ini);
|
|
m_TestTargetPath = str;
|
|
|
|
if (m_TestDriveLetter == 99)
|
|
{
|
|
m_IndexTestDrive = count;
|
|
}
|
|
m_MaxIndexTestDrive = count;
|
|
|
|
UpdateDriveToolTip();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CDiskMarkDlg::UpdateDriveToolTip()
|
|
{
|
|
m_ComboDrive.SetCurSel(m_IndexTestDrive);
|
|
if (m_TestDriveLetter == 99 && !m_TestTargetPath.IsEmpty())
|
|
{
|
|
m_ComboDrive.SetToolTipText(m_TestTargetPath);
|
|
}
|
|
else
|
|
{
|
|
m_ComboDrive.SetToolTipText(i18n(L"Title", L"TEST_DRIVE"));
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::ChangeLang(CString LangName)
|
|
{
|
|
m_CurrentLangPath.Format(L"%s\\%s.lang", (LPTSTR)m_LangDir.GetString(), (LPTSTR)LangName.GetString());
|
|
|
|
CString cstr;
|
|
CMenu *menu = GetMenu();
|
|
CMenu subMenu;
|
|
|
|
cstr = i18n(L"Menu", L"FILE");
|
|
menu->ModifyMenu(0, MF_BYPOSITION | MF_STRING, 0, cstr);
|
|
cstr = i18n(L"Menu", L"SETTINGS");
|
|
menu->ModifyMenu(1, MF_BYPOSITION | MF_STRING, 1, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE");
|
|
menu->ModifyMenu(2, MF_BYPOSITION | MF_STRING, 2, cstr);
|
|
cstr = i18n(L"Menu", L"THEME");
|
|
menu->ModifyMenu(3, MF_BYPOSITION | MF_STRING, 3, cstr);
|
|
cstr = i18n(L"Menu", L"HELP");
|
|
menu->ModifyMenu(4, MF_BYPOSITION | MF_STRING, 4, cstr);
|
|
cstr = i18n(L"Menu", L"LANGUAGE");
|
|
if(cstr.Find(L"Language") >= 0)
|
|
{
|
|
cstr = L"&Language";
|
|
menu->ModifyMenu(5, MF_BYPOSITION | MF_STRING, 5, cstr);
|
|
}
|
|
else
|
|
{
|
|
menu->ModifyMenu(5, MF_BYPOSITION | MF_STRING, 5, cstr + L"(&Language)");
|
|
}
|
|
|
|
cstr = i18n(L"Menu", L"FILE_EXIT") + L"\tAlt + F4";
|
|
menu->ModifyMenu(ID_EXIT, MF_STRING, ID_EXIT, cstr);
|
|
cstr = i18n(L"Menu", L"SAVE_TEXT") + L"\tCtrl + T";
|
|
menu->ModifyMenu(ID_SAVE_TEXT, MF_STRING, ID_SAVE_TEXT, cstr);
|
|
cstr = i18n(L"Menu", L"SAVE_IMAGE") + L"\tCtrl + S";
|
|
menu->ModifyMenu(ID_SAVE_IMAGE, MF_STRING, ID_SAVE_IMAGE, cstr);
|
|
|
|
cstr = i18n(L"Menu", L"EDIT_COPY") + L"\tCtrl + Shift + C";
|
|
menu->ModifyMenu(ID_COPY, MF_STRING, ID_COPY, cstr);
|
|
|
|
subMenu.Attach(menu->GetSubMenu(1)->GetSafeHmenu());
|
|
cstr = i18n(L"Menu", L"TEST_DATA");
|
|
subMenu.ModifyMenu(0, MF_BYPOSITION, 0, cstr);
|
|
subMenu.Detach();
|
|
|
|
cstr = i18n(L"Menu", L"DEFAULT_RANDOM");
|
|
menu->ModifyMenu(ID_MODE_DEFAULT, MF_STRING, ID_MODE_DEFAULT, cstr);
|
|
cstr = i18n(L"Menu", L"ALL_ZERO");
|
|
menu->ModifyMenu(ID_MODE_ALL0X00, MF_STRING, ID_MODE_ALL0X00, cstr);
|
|
|
|
if (m_TestData == TEST_DATA_ALL0X00)
|
|
{
|
|
OnModeAll0x00();
|
|
}
|
|
else
|
|
{
|
|
OnModeDefault();
|
|
}
|
|
|
|
cstr = i18n(L"Dialog", L"DEFAULT");
|
|
menu->ModifyMenu(ID_SETTING_DEFAULT, MF_STRING, ID_SETTING_DEFAULT, cstr);
|
|
|
|
CheckRadioPresetMode();
|
|
|
|
cstr = i18n(L"Menu", L"SETTINGS") + L"\tCtrl + Q";
|
|
menu->ModifyMenu(ID_SETTINGS_QUEUESTHREADS, MF_STRING, ID_SETTINGS_QUEUESTHREADS, cstr);
|
|
|
|
cstr = i18n(L"Menu", L"PROFILE_DEFAULT");
|
|
menu->ModifyMenu(ID_PROFILE_DEFAULT, MF_STRING, ID_PROFILE_DEFAULT, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE_PEAK");
|
|
menu->ModifyMenu(ID_PROFILE_PEAK, MF_STRING, ID_PROFILE_PEAK, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE_REAL");
|
|
menu->ModifyMenu(ID_PROFILE_REAL, MF_STRING, ID_PROFILE_REAL, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE_DEMO");
|
|
menu->ModifyMenu(ID_PROFILE_DEMO, MF_STRING, ID_PROFILE_DEMO, cstr);
|
|
|
|
#ifdef MIX_MODE
|
|
cstr = i18n(L"Menu", L"PROFILE_DEFAULT") + L" [+Mix]";
|
|
menu->ModifyMenu(ID_PROFILE_DEFAULT_MIX, MF_STRING, ID_PROFILE_DEFAULT_MIX, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE_PEAK") + L" [+Mix]";
|
|
menu->ModifyMenu(ID_PROFILE_PEAK_MIX, MF_STRING, ID_PROFILE_PEAK_MIX, cstr);
|
|
cstr = i18n(L"Menu", L"PROFILE_REAL") + L" [+Mix]";
|
|
menu->ModifyMenu(ID_PROFILE_REAL_MIX, MF_STRING, ID_PROFILE_REAL_MIX, cstr);
|
|
#endif
|
|
|
|
cstr = i18n(L"Menu", L"HELP") + L" [Web]" + L"\tF1";
|
|
menu->ModifyMenu(ID_HELP, MF_STRING, ID_HELP, cstr);
|
|
cstr = i18n(L"Menu", L"HELP_ABOUT");
|
|
menu->ModifyMenu(ID_ABOUT, MF_STRING, ID_ABOUT, cstr);
|
|
|
|
// Theme
|
|
subMenu.Attach(menu->GetSubMenu(3)->GetSafeHmenu());
|
|
cstr = i18n(L"Menu", L"ZOOM");
|
|
subMenu.ModifyMenu(0, MF_BYPOSITION, 0, cstr);
|
|
subMenu.Detach();
|
|
|
|
cstr = i18n(L"Menu", L"AUTO");
|
|
menu->ModifyMenu(ID_ZOOM_AUTO, MF_STRING, ID_ZOOM_AUTO, cstr);
|
|
|
|
cstr = i18n(L"Menu", L"FONT_SETTING") + L"\tCtrl + F";
|
|
menu->ModifyMenu(ID_FONT_SETTING, MF_STRING, ID_FONT_SETTING, cstr);
|
|
|
|
CheckRadioZoomType();
|
|
|
|
switch (m_Profile)
|
|
{
|
|
case PROFILE_DEFAULT:
|
|
ProfileDefault();
|
|
break;
|
|
case PROFILE_PEAK:
|
|
ProfilePeak();
|
|
break;
|
|
case PROFILE_REAL:
|
|
ProfileReal();
|
|
break;
|
|
case PROFILE_DEMO:
|
|
ProfileDemo();
|
|
break;
|
|
#ifdef MIX_MODE
|
|
case PROFILE_DEFAULT_MIX:
|
|
ProfileDefaultMix();
|
|
break;
|
|
case PROFILE_PEAK_MIX:
|
|
ProfilePeakMix();
|
|
break;
|
|
case PROFILE_REAL_MIX:
|
|
ProfileRealMix();
|
|
break;
|
|
#endif
|
|
default:
|
|
ProfileDefault();
|
|
break;
|
|
}
|
|
|
|
switch (m_Benchmark)
|
|
{
|
|
case BENCHMARK_READ_WRITE:
|
|
BenchmarkReadWrite();
|
|
break;
|
|
case BENCHMARK_READ:
|
|
BenchmarkReadOnly();
|
|
break;
|
|
case BENCHMARK_WRITE:
|
|
BenchmarkWriteOnly();
|
|
break;
|
|
default:
|
|
BenchmarkReadWrite();
|
|
break;
|
|
}
|
|
|
|
SetMenu(menu);
|
|
|
|
m_MesStopBenchmark = i18n(L"Message", L"STOP_BENCHMARK");
|
|
m_MesDiskCapacityError = i18n(L"Message", L"DISK_CAPACITY_ERROR");
|
|
m_MesDiskCreateFileError = i18n(L"Message", L"DISK_CREATE_FILE_ERROR");
|
|
m_MesDiskWriteError = i18n(L"Message", L"DISK_WRITE_ERROR");
|
|
m_MesDiskReadError = i18n(L"Message", L"DISK_READ_ERROR");
|
|
m_MesDiskSpdNotFound = i18n(L"Message", L"DISK_SPD_NOT_FOUND");
|
|
|
|
UpdateDriveToolTip();
|
|
|
|
WritePrivateProfileString(L"Setting", L"Language", LangName, m_Ini);
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::OnCommand(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
// Select Theme
|
|
if (WM_THEME_ID <= wParam && wParam < WM_THEME_ID + (UINT)m_MenuArrayTheme.GetSize())
|
|
{
|
|
CMenu menu;
|
|
CMenu subMenu;
|
|
menu.Attach(GetMenu()->GetSafeHmenu());
|
|
subMenu.Attach(menu.GetSubMenu(MENU_THEME_INDEX)->GetSafeHmenu());
|
|
|
|
m_CurrentTheme = m_MenuArrayTheme.GetAt(wParam - WM_THEME_ID);
|
|
if (m_CurrentTheme.Compare(m_RandomThemeLabel) == 0)
|
|
{
|
|
m_CurrentTheme = GetRandomTheme();
|
|
m_RandomThemeLabel = L"Random";
|
|
m_RandomThemeName = L" (" + m_CurrentTheme + L")";
|
|
|
|
// ChangeTheme save the theme configuration to profile; so if we are on
|
|
// Random, then save Random to profile.
|
|
ChangeTheme(m_RandomThemeLabel);
|
|
}
|
|
else
|
|
{
|
|
ChangeTheme(m_MenuArrayTheme.GetAt(wParam - WM_THEME_ID));
|
|
m_RandomThemeName = L"";
|
|
}
|
|
|
|
subMenu.ModifyMenu(WM_THEME_ID, MF_STRING, WM_THEME_ID, m_RandomThemeLabel + m_RandomThemeName);
|
|
subMenu.CheckMenuRadioItem(WM_THEME_ID, WM_THEME_ID + (UINT)m_MenuArrayTheme.GetSize(),
|
|
(UINT)wParam, MF_BYCOMMAND);
|
|
subMenu.Detach();
|
|
menu.Detach();
|
|
|
|
if (m_Profile == PROFILE_DEMO && IsFileExist(m_ThemeDir + m_CurrentTheme + L"\\BackgroundDemo-300.png"))
|
|
{
|
|
m_BackgroundName = L"BackgroundDemo";
|
|
}
|
|
else
|
|
{
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
UpdateThemeInfo();
|
|
UpdateDialogSize();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
// Select Language
|
|
if(WM_LANGUAGE_ID <= wParam && wParam < WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize())
|
|
{
|
|
CMenu menu;
|
|
CMenu subMenu;
|
|
CMenu subMenuAN;
|
|
CMenu subMenuOZ;
|
|
menu.Attach(GetMenu()->GetSafeHmenu());
|
|
subMenu.Attach(menu.GetSubMenu(MENU_LANG_INDEX)->GetSafeHmenu());
|
|
subMenuAN.Attach(subMenu.GetSubMenu(0)->GetSafeHmenu());
|
|
subMenuOZ.Attach(subMenu.GetSubMenu(1)->GetSafeHmenu());
|
|
|
|
m_CurrentLang = m_MenuArrayLang.GetAt(wParam - WM_LANGUAGE_ID);
|
|
ChangeLang(m_MenuArrayLang.GetAt(wParam - WM_LANGUAGE_ID));
|
|
subMenuAN.CheckMenuRadioItem(WM_LANGUAGE_ID, WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize(),
|
|
(UINT)wParam, MF_BYCOMMAND);
|
|
subMenuOZ.CheckMenuRadioItem(WM_LANGUAGE_ID, WM_LANGUAGE_ID + (UINT)m_MenuArrayLang.GetSize(),
|
|
(UINT)wParam, MF_BYCOMMAND);
|
|
|
|
subMenuOZ.Detach();
|
|
subMenuAN.Detach();
|
|
subMenu.Detach();
|
|
menu.Detach();
|
|
|
|
UpdateComboTooltip();
|
|
}
|
|
|
|
return CMainDialogFx::OnCommand(wParam, lParam);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnCopy()
|
|
{
|
|
SaveText(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSaveText()
|
|
{
|
|
CString path;
|
|
SYSTEMTIME st;
|
|
GetLocalTime(&st);
|
|
path.Format(L"%s_%04d%02d%02d%02d%02d%02d", PRODUCT_NAME, st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
|
|
|
|
CString filter = L"TEXT (*.txt)|*.txt||";
|
|
CFileDialog save(FALSE, L"txt", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER, filter);
|
|
|
|
if (save.DoModal() == IDOK)
|
|
{
|
|
SaveText(save.GetPathName());
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSaveImage()
|
|
{
|
|
SaveImage();
|
|
}
|
|
|
|
CString CDiskMarkDlg::GetResultString(int type, double score, double latency, int size, int queues, int threads)
|
|
{
|
|
CString result;
|
|
double iops = 0.0;
|
|
|
|
iops = score * 1000 * 1000 / ((double)size * 1024);
|
|
if (latency < 0.0)
|
|
{
|
|
latency = 0.0;
|
|
}
|
|
|
|
if (type == BENCH_RND)
|
|
{
|
|
if (size >= 1024)
|
|
{
|
|
result.Format(L" RND %4dMiB (Q=%3d, T=%2d): %9.3f MB/s [%9.1f IOPS] <%9.2f us>", size / 1024, queues, threads, score, iops, latency);
|
|
}
|
|
else
|
|
{
|
|
result.Format(L" RND %4dKiB (Q=%3d, T=%2d): %9.3f MB/s [%9.1f IOPS] <%9.2f us>", size, queues, threads, score, iops, latency);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (size >= 1024)
|
|
{
|
|
result.Format(L" SEQ %4dMiB (Q=%3d, T=%2d): %9.3f MB/s [%9.1f IOPS] <%9.2f us>", size / 1024, queues, threads, score, iops, latency);
|
|
}
|
|
else
|
|
{
|
|
result.Format(L" SEQ %4dKiB (Q=%3d, T=%2d): %9.3f MB/s [%9.1f IOPS] <%9.2f us>", size, queues, threads, score, iops, latency);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
void CDiskMarkDlg::SaveText(CString fileName)
|
|
{
|
|
CString cstr, clip;
|
|
|
|
UpdateData(TRUE);
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
clip = L"\
|
|
------------------------------------------------------------------------------\r\n\
|
|
%PRODUCT% %VERSION%%EDITION% (C) %COPY_YEAR% hiyohiyo\r\n\
|
|
Crystal Dew World: https://crystalmark.info/\r\n\
|
|
------------------------------------------------------------------------------\r\n\
|
|
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]\r\n\
|
|
* KB = 1000 bytes, KiB = 1024 bytes\r\n\
|
|
\r\n\
|
|
[Read]\r\n\
|
|
%BenchRead1%\r\n\
|
|
\r\n\
|
|
[Write]\r\n\
|
|
%BenchWrite1%\r\n\
|
|
\r\n\
|
|
Profile: Demo\r\n\
|
|
Test: %TestSize% (x%TestCount%)%Capacity%\r\n\
|
|
Mode:%TestMode%\r\n\
|
|
Time: Measure %MeasureTime% / Interval %IntervalTime% \r\n\
|
|
Date: %Date%\r\n\
|
|
OS: %OS%\r\n\
|
|
%Comment%";
|
|
}
|
|
else if (m_Profile == PROFILE_DEFAULT || m_Profile == PROFILE_DEFAULT_MIX)
|
|
{
|
|
clip = L"\
|
|
------------------------------------------------------------------------------\r\n\
|
|
%PRODUCT% %VERSION%%EDITION% (C) %COPY_YEAR% hiyohiyo\r\n\
|
|
Crystal Dew World: https://crystalmark.info/\r\n\
|
|
------------------------------------------------------------------------------\r\n\
|
|
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]\r\n\
|
|
* KB = 1000 bytes, KiB = 1024 bytes\r\n\
|
|
\r\n\
|
|
[Read]\r\n\
|
|
%BenchRead1%\r\n\
|
|
%BenchRead2%\r\n\
|
|
%BenchRead3%\r\n\
|
|
%BenchRead4%\r\n\
|
|
\r\n\
|
|
[Write]\r\n\
|
|
%BenchWrite1%\r\n\
|
|
%BenchWrite2%\r\n\
|
|
%BenchWrite3%\r\n\
|
|
%BenchWrite4%\r\n\
|
|
\r\n\
|
|
";
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
clip += L"\
|
|
[Mix] %MixRatio%\r\n\
|
|
%BenchMix1%\r\n\
|
|
%BenchMix2%\r\n\
|
|
%BenchMix3%\r\n\
|
|
%BenchMix4%\r\n\
|
|
\r\n\
|
|
";
|
|
}
|
|
#endif
|
|
|
|
clip += L"\
|
|
Profile: Default\r\n\
|
|
Test: %TestSize% (x%TestCount%)%Capacity%\r\n\
|
|
Mode:%TestMode%\r\n\
|
|
Time: Measure %MeasureTime% / Interval %IntervalTime% \r\n\
|
|
Date: %Date%\r\n\
|
|
OS: %OS%\r\n\
|
|
%Comment%";
|
|
}
|
|
else
|
|
{
|
|
clip = L"\
|
|
------------------------------------------------------------------------------\r\n\
|
|
%PRODUCT% %VERSION%%EDITION% (C) %COPY_YEAR% hiyohiyo\r\n\
|
|
Crystal Dew World: https://crystalmark.info/\r\n\
|
|
------------------------------------------------------------------------------\r\n\
|
|
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]\r\n\
|
|
* KB = 1000 bytes, KiB = 1024 bytes\r\n\
|
|
\r\n\
|
|
[Read]\r\n\
|
|
%SequentialRead1%\r\n\
|
|
%RandomRead1%\r\n\
|
|
\r\n\
|
|
[Write]\r\n\
|
|
%SequentialWrite1%\r\n\
|
|
%RandomWrite1%\r\n\
|
|
\r\n\
|
|
";
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
clip += L"\
|
|
[Mix] %MixRatio%\r\n\
|
|
%SequentialMix1%\r\n\
|
|
%RandomMix1%\r\n\
|
|
\r\n\
|
|
";
|
|
}
|
|
#endif
|
|
|
|
if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
clip += L"\
|
|
Profile: Peak\r\n\
|
|
";
|
|
}
|
|
else
|
|
{
|
|
clip += L"\
|
|
Profile: Real\r\n\
|
|
";
|
|
}
|
|
|
|
clip += L"\
|
|
Test: %TestSize% (x%TestCount%)%Capacity%\r\n\
|
|
Mode:%TestMode%\r\n\
|
|
Time: Measure %MeasureTime% / Interval %IntervalTime% \r\n\
|
|
Date: %Date%\r\n\
|
|
OS: %OS%\r\n\
|
|
%Comment%";
|
|
}
|
|
|
|
clip.Replace(L"%PRODUCT%", PRODUCT_NAME);
|
|
clip.Replace(L"%VERSION%", PRODUCT_VERSION);
|
|
|
|
cstr = PRODUCT_EDITION;
|
|
if(! cstr.IsEmpty())
|
|
{
|
|
clip.Replace(L"%EDITION%", L" " PRODUCT_EDITION);
|
|
}
|
|
else
|
|
{
|
|
clip.Replace(L"%EDITION%", PRODUCT_EDITION);
|
|
}
|
|
clip.Replace(L"%COPY_YEAR%", PRODUCT_COPY_YEAR);
|
|
|
|
double iops = 0.0;
|
|
double latency = 0.0;
|
|
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
clip.Replace(L"%BenchRead1%", GetResultString(m_BenchType[8], m_ReadScore[8], m_ReadLatency[8], m_BenchSize[8], m_BenchQueues[8], m_BenchThreads[8]));
|
|
clip.Replace(L"%BenchWrite1%", GetResultString(m_BenchType[8], m_WriteScore[8], m_WriteLatency[8], m_BenchSize[8], m_BenchQueues[8], m_BenchThreads[8]));
|
|
|
|
}
|
|
else if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
clip.Replace(L"%SequentialRead1%", GetResultString(BENCH_SEQ, m_ReadScore[4], m_ReadLatency[4], m_BenchSize[4], m_BenchQueues[4], m_BenchThreads[4]));
|
|
clip.Replace(L"%SequentialWrite1%", GetResultString(BENCH_SEQ, m_WriteScore[4], m_WriteLatency[4], m_BenchSize[4], m_BenchQueues[4], m_BenchThreads[4]));
|
|
clip.Replace(L"%RandomRead1%", GetResultString(BENCH_RND, m_ReadScore[5], m_ReadLatency[5], m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5]));
|
|
clip.Replace(L"%RandomWrite1%", GetResultString(BENCH_RND, m_WriteScore[5], m_WriteLatency[5], m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5]));
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
clip.Replace(L"%SequentialMix1%", GetResultString(BENCH_SEQ, m_MixScore[4], m_MixLatency[4], m_BenchSize[4], m_BenchQueues[4], m_BenchThreads[4]));
|
|
clip.Replace(L"%RandomMix1%", GetResultString(BENCH_RND, m_MixScore[5], m_MixLatency[5], m_BenchSize[5], m_BenchQueues[5], m_BenchThreads[5]));
|
|
cstr.Format(L"Read %d%%/Write %d%%", 100 - m_MixRatio, m_MixRatio);
|
|
clip.Replace(L"%MixRatio%", cstr);
|
|
}
|
|
#endif
|
|
}
|
|
else if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
clip.Replace(L"%SequentialRead1%", GetResultString(BENCH_SEQ, m_ReadScore[6], m_ReadLatency[6], 1024, 1, 1));
|
|
clip.Replace(L"%SequentialWrite1%", GetResultString(BENCH_SEQ, m_WriteScore[6], m_WriteLatency[6], 1024, 1, 1));
|
|
clip.Replace(L"%RandomRead1%", GetResultString(BENCH_RND, m_ReadScore[7], m_ReadLatency[7], 4, 1, 1));
|
|
clip.Replace(L"%RandomWrite1%", GetResultString(BENCH_RND, m_WriteScore[7], m_WriteLatency[7], 4, 1, 1));
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
clip.Replace(L"%SequentialMix1%", GetResultString(BENCH_SEQ, m_MixScore[6], m_MixLatency[6], 1024, 1, 1));
|
|
clip.Replace(L"%RandomMix1%", GetResultString(BENCH_RND, m_MixScore[7], m_MixLatency[7], 4, 1, 1));
|
|
cstr.Format(L"Read %d%%/Write %d%%", 100 - m_MixRatio, m_MixRatio);
|
|
clip.Replace(L"%MixRatio%", cstr);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
else
|
|
{
|
|
clip.Replace(L"%BenchRead1%", GetResultString(m_BenchType[0], m_ReadScore[0], m_ReadLatency[0], m_BenchSize[0], m_BenchQueues[0], m_BenchThreads[0]));
|
|
clip.Replace(L"%BenchRead2%", GetResultString(m_BenchType[1], m_ReadScore[1], m_ReadLatency[1], m_BenchSize[1], m_BenchQueues[1], m_BenchThreads[1]));
|
|
clip.Replace(L"%BenchRead3%", GetResultString(m_BenchType[2], m_ReadScore[2], m_ReadLatency[2], m_BenchSize[2], m_BenchQueues[2], m_BenchThreads[2]));
|
|
clip.Replace(L"%BenchRead4%", GetResultString(m_BenchType[3], m_ReadScore[3], m_ReadLatency[3], m_BenchSize[3], m_BenchQueues[3], m_BenchThreads[3]));
|
|
|
|
clip.Replace(L"%BenchWrite1%", GetResultString(m_BenchType[0], m_WriteScore[0], m_WriteLatency[0], m_BenchSize[0], m_BenchQueues[0], m_BenchThreads[0]));
|
|
clip.Replace(L"%BenchWrite2%", GetResultString(m_BenchType[1], m_WriteScore[1], m_WriteLatency[1], m_BenchSize[1], m_BenchQueues[1], m_BenchThreads[1]));
|
|
clip.Replace(L"%BenchWrite3%", GetResultString(m_BenchType[2], m_WriteScore[2], m_WriteLatency[2], m_BenchSize[2], m_BenchQueues[2], m_BenchThreads[2]));
|
|
clip.Replace(L"%BenchWrite4%", GetResultString(m_BenchType[3], m_WriteScore[3], m_WriteLatency[3], m_BenchSize[3], m_BenchQueues[3], m_BenchThreads[3]));
|
|
|
|
#ifdef MIX_MODE
|
|
if (m_MixMode)
|
|
{
|
|
clip.Replace(L"%BenchMix1%", GetResultString(m_BenchType[0], m_MixScore[0], m_MixLatency[0], m_BenchSize[0], m_BenchQueues[0], m_BenchThreads[0]));
|
|
clip.Replace(L"%BenchMix2%", GetResultString(m_BenchType[1], m_MixScore[1], m_MixLatency[1], m_BenchSize[1], m_BenchQueues[1], m_BenchThreads[1]));
|
|
clip.Replace(L"%BenchMix3%", GetResultString(m_BenchType[2], m_MixScore[2], m_MixLatency[2], m_BenchSize[2], m_BenchQueues[2], m_BenchThreads[2]));
|
|
clip.Replace(L"%BenchMix4%", GetResultString(m_BenchType[3], m_MixScore[3], m_MixLatency[3], m_BenchSize[3], m_BenchQueues[3], m_BenchThreads[3]));
|
|
|
|
cstr.Format(L"Read %d%%/Write %d%%", 100 - m_MixRatio, m_MixRatio);
|
|
clip.Replace(L"%MixRatio%", cstr);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
if (m_ValueTestSize.Find(L"MiB") == -1)
|
|
{
|
|
cstr.Format(L"%d GiB", _tstoi(m_ValueTestSize));
|
|
}
|
|
else
|
|
{
|
|
cstr.Format(L"%d MiB", _tstoi(m_ValueTestSize));
|
|
}
|
|
|
|
clip.Replace(L"%TestSize%", cstr);
|
|
cstr.Format(L"%d", _tstoi(m_ValueTestCount));
|
|
clip.Replace(L"%TestCount%", cstr);
|
|
|
|
cstr = L"";
|
|
if (m_AdminMode){ cstr += L" [Admin]"; }
|
|
if (m_TestData) { cstr += L" <0Fill>"; }
|
|
clip.Replace(L"%TestMode%", cstr);
|
|
|
|
m_Comment.GetWindowText(cstr);
|
|
if (cstr.IsEmpty())
|
|
{
|
|
clip.Replace(L"%Comment%", L"");
|
|
}else
|
|
{
|
|
clip.Replace(L"%Comment%", L"Comment: " + cstr + L"\r\n");
|
|
}
|
|
|
|
cstr.Format(L"%d sec", m_IntervalTime);
|
|
clip.Replace(L"%IntervalTime%", cstr);
|
|
cstr.Format(L"%d sec", m_MeasureTime);
|
|
clip.Replace(L"%MeasureTime%", cstr);
|
|
|
|
CString null;
|
|
GetOsName(cstr, null, null, null);
|
|
clip.Replace(L"%OS%", cstr);
|
|
|
|
SYSTEMTIME st;
|
|
GetLocalTime(&st);
|
|
cstr.Format(L"%04d/%02d/%02d %d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
|
|
clip.Replace(L"%Date%", cstr);
|
|
|
|
if (m_ValueTestDrive.FindOneOf(L":") != -1)
|
|
{
|
|
clip.Replace(L"%Capacity%", L" [" + m_ValueTestDrive + L"]");
|
|
}
|
|
else
|
|
{
|
|
clip.Replace(L"%Capacity%", L"");
|
|
}
|
|
|
|
if (fileName.IsEmpty())
|
|
{
|
|
if (OpenClipboard())
|
|
{
|
|
HGLOBAL clipbuffer;
|
|
TCHAR* buffer;
|
|
EmptyClipboard();
|
|
clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(TCHAR) * (clip.GetLength() + 1));
|
|
if (clipbuffer != NULL)
|
|
{
|
|
buffer = (TCHAR*)GlobalLock(clipbuffer);
|
|
if (buffer == NULL)
|
|
{
|
|
GlobalFree(clipbuffer);
|
|
CloseClipboard();
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
_tcscpy_s(buffer, clip.GetLength() + 1, LPCTSTR(clip));
|
|
GlobalUnlock(clipbuffer);
|
|
SetClipboardData(CF_UNICODETEXT, clipbuffer);
|
|
}
|
|
}
|
|
CloseClipboard();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CT2A utf8(clip, CP_UTF8);
|
|
|
|
CFile file;
|
|
if (file.Open(fileName, CFile::modeCreate | CFile::modeWrite))
|
|
{
|
|
file.Write((char*)utf8, (UINT)strlen(utf8));
|
|
file.Close();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom100()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_100, 100))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::CheckRadioPresetMode()
|
|
{
|
|
if (IsDefaultMode())
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_DEFAULT, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
}
|
|
else if (IsNVMe8Mode())
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_NVME_8, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
}
|
|
|
|
else if (IsFlashMemoryMode())
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_FLASH_MEMORY, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
}
|
|
else
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, 0, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom125()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_125, 125))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom150()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_150, 150))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom200()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_200, 200))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom250()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_250, 250))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoom300()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_300, 300))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnZoomAuto()
|
|
{
|
|
if (CheckRadioZoomType(ID_ZOOM_AUTO, 0))
|
|
{
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
BOOL CDiskMarkDlg::CheckRadioZoomType(int id, int value)
|
|
{
|
|
if(m_ZoomType == value)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
CMenu *menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_ZOOM_100, ID_ZOOM_AUTO, id, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_ZoomType = value;
|
|
|
|
CString cstr;
|
|
cstr.Format(L"%d", value);
|
|
WritePrivateProfileString(L"Setting", L"ZoomType", cstr, m_Ini);
|
|
|
|
ChangeZoomType(m_ZoomType);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CDiskMarkDlg::CheckRadioZoomType()
|
|
{
|
|
int id = ID_ZOOM_AUTO;
|
|
|
|
switch(m_ZoomType)
|
|
{
|
|
case 100: id = ID_ZOOM_100; break;
|
|
case 125: id = ID_ZOOM_125; break;
|
|
case 150: id = ID_ZOOM_150; break;
|
|
case 200: id = ID_ZOOM_200; break;
|
|
case 250: id = ID_ZOOM_250; break;
|
|
case 300: id = ID_ZOOM_300; break;
|
|
default: id = ID_ZOOM_AUTO;break;
|
|
}
|
|
|
|
CMenu *menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_ZOOM_100, ID_ZOOM_AUTO, id, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
}
|
|
|
|
void CDiskMarkDlg::OnHelp()
|
|
{
|
|
if (GetUserDefaultLCID() == 0x0411) // Japanese
|
|
{
|
|
OpenUrl(URL_HELP_JA);
|
|
}
|
|
else // Other Language
|
|
{
|
|
OpenUrl(URL_HELP_EN);
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnCrystalDewWorld()
|
|
{
|
|
if (GetUserDefaultLCID() == 0x0411) // Japanese
|
|
{
|
|
OpenUrl(URL_CRYSTAL_DEW_WORLD_JA);
|
|
}
|
|
else // Other Language
|
|
{
|
|
OpenUrl(URL_CRYSTAL_DEW_WORLD_EN);
|
|
}
|
|
}
|
|
|
|
#ifdef MIX_MODE
|
|
#define ID_PROFILE_MAX ID_PROFILE_REAL_MIX
|
|
#else
|
|
#define ID_PROFILE_MAX ID_PROFILE_DEMO
|
|
#endif
|
|
|
|
void CDiskMarkDlg::OnSettingDefault()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_DEFAULT, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
SettingsQueuesThreads(0);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSettingNVMe8()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_NVME_8, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
SettingsQueuesThreads(1);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSettingFlashMemory()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_SETTING_DEFAULT, ID_SETTING_FLASH_MEMORY, ID_SETTING_FLASH_MEMORY, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
SettingsQueuesThreads(2);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnModeDefault()
|
|
{
|
|
CMenu *menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_MODE_DEFAULT, ID_MODE_ALL0X00, ID_MODE_DEFAULT, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_TestData = TEST_DATA_RANDOM;
|
|
WritePrivateProfileString(L"Setting", L"TestData", L"0", m_Ini);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::OnModeAll0x00()
|
|
{
|
|
CMenu *menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_MODE_DEFAULT, ID_MODE_ALL0X00, ID_MODE_ALL0X00, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_TestData = TEST_DATA_ALL0X00;
|
|
WritePrivateProfileString(L"Setting", L"TestData", L"1", m_Ini);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfileDefault()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
ProfileDefault();
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfileDefault()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_MAX, ID_PROFILE_DEFAULT, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_DEFAULT;
|
|
m_MixMode = FALSE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"0", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfilePeak()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
ProfilePeak();
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfilePeak()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_MAX, ID_PROFILE_PEAK, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_PEAK;
|
|
m_MixMode = FALSE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"1", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfileReal()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
ProfileReal();
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfileReal()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_MAX, ID_PROFILE_REAL, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_REAL;
|
|
m_MixMode = FALSE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"2", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfileDemo()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
ProfileDemo();
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfileDemo()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_MAX, ID_PROFILE_DEMO, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_DEMO;
|
|
m_MixMode = FALSE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"3", m_Ini);
|
|
|
|
if (IsFileExist(m_ThemeDir + m_CurrentTheme + L"\\BackgroundDemo-300.png"))
|
|
{
|
|
m_BackgroundName = L"BackgroundDemo";
|
|
}
|
|
else
|
|
{
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
}
|
|
|
|
#ifdef MIX_MODE
|
|
void CDiskMarkDlg::OnProfileDefaultMix()
|
|
{
|
|
ProfileDefaultMix();
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
ChangeButtonStatus(TRUE);
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfileDefaultMix()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_REAL_MIX, ID_PROFILE_DEFAULT_MIX, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_DEFAULT_MIX;
|
|
m_MixMode = TRUE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"4", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfilePeakMix()
|
|
{
|
|
ProfilePeakMix();
|
|
ChangeButtonStatus(TRUE);
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfilePeakMix()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_REAL_MIX, ID_PROFILE_PEAK_MIX, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_PEAK_MIX;
|
|
m_MixMode = TRUE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"5", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
|
|
void CDiskMarkDlg::OnProfileRealMix()
|
|
{
|
|
ProfileRealMix();
|
|
ChangeButtonStatus(TRUE);
|
|
UpdateUnitLabel();
|
|
InitScore();
|
|
UpdateDialogSize();
|
|
SetWindowTitle(L"");
|
|
}
|
|
|
|
void CDiskMarkDlg::ProfileRealMix()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_PROFILE_DEFAULT, ID_PROFILE_REAL_MIX, ID_PROFILE_REAL_MIX, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Profile = PROFILE_REAL_MIX;
|
|
m_MixMode = TRUE;
|
|
WritePrivateProfileString(L"Setting", L"Profile", L"6", m_Ini);
|
|
m_BackgroundName = L"Background";
|
|
}
|
|
#endif
|
|
|
|
void CDiskMarkDlg::OnBenchmarkReadWrite()
|
|
{
|
|
BenchmarkReadWrite();
|
|
}
|
|
|
|
void CDiskMarkDlg::BenchmarkReadWrite()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_BENCHMARK_READ_WRITE, ID_BENCHMARK_WRITE_ONLY, ID_BENCHMARK_READ_WRITE, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Benchmark = BENCHMARK_READ_WRITE;
|
|
WritePrivateProfileString(L"Setting", L"Benchmark", L"3", m_Ini);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnBenchmarkReadOnly()
|
|
{
|
|
BenchmarkReadOnly();
|
|
}
|
|
|
|
void CDiskMarkDlg::BenchmarkReadOnly()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_BENCHMARK_READ_WRITE, ID_BENCHMARK_WRITE_ONLY, ID_BENCHMARK_READ_ONLY, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Benchmark = BENCHMARK_READ;
|
|
WritePrivateProfileString(L"Setting", L"Benchmark", L"1", m_Ini);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnBenchmarkWriteOnly()
|
|
{
|
|
BenchmarkWriteOnly();
|
|
}
|
|
|
|
void CDiskMarkDlg::BenchmarkWriteOnly()
|
|
{
|
|
CMenu* menu = GetMenu();
|
|
menu->CheckMenuRadioItem(ID_BENCHMARK_READ_WRITE, ID_BENCHMARK_WRITE_ONLY, ID_BENCHMARK_WRITE_ONLY, MF_BYCOMMAND);
|
|
SetMenu(menu);
|
|
DrawMenuBar();
|
|
|
|
m_Benchmark = BENCHMARK_WRITE;
|
|
WritePrivateProfileString(L"Setting", L"Benchmark", L"2", m_Ini);
|
|
}
|
|
|
|
void CDiskMarkDlg::OnSettingsQueuesThreads()
|
|
{
|
|
if (! m_DiskBenchStatus)
|
|
{
|
|
CSettingsDlg* dlg = new CSettingsDlg(this);
|
|
dlg->DoModal();
|
|
UpdateQueuesThreads();
|
|
ChangeButtonStatus(TRUE);
|
|
|
|
UpdateData(FALSE);
|
|
|
|
delete dlg;
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnFontSetting()
|
|
{
|
|
CFontSelectionDlg fontSelection(this);
|
|
if (fontSelection.DoModal() == IDOK)
|
|
{
|
|
m_FontFace = fontSelection.GetFontFace();
|
|
m_FontScale = fontSelection.GetFontScale();
|
|
m_FontRatio = m_FontScale / 100.0;
|
|
m_FontRender = fontSelection.GetFontRender();
|
|
|
|
CString cstr;
|
|
WritePrivateProfileString(L"Setting", L"FontFace", L"\"" + m_FontFace + L"\"", m_Ini);
|
|
cstr.Format(L"%d", m_FontScale);
|
|
WritePrivateProfileString(L"Setting", L"FontScale", cstr, m_Ini);
|
|
cstr.Format(L"%d", m_FontRender);
|
|
WritePrivateProfileString(L"Setting", L"FontRender", cstr, m_Ini);
|
|
|
|
UpdateDialogSize();
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::OnCbnSelchangeComboDrive()
|
|
{
|
|
SelectDrive();
|
|
}
|
|
|
|
void CDiskMarkDlg::OnCbnSelchangeComboUnit()
|
|
{
|
|
UpdateScore();
|
|
UpdateUnitLabel();
|
|
}
|
|
|
|
#ifdef MIX_MODE
|
|
void CDiskMarkDlg::OnCbnSelchangeComboMix()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_MixRatio = (9 - m_IndexTestMix) * 10;
|
|
|
|
CString cstr;
|
|
cstr.Format(L"%d", m_MixRatio);
|
|
WritePrivateProfileString(L"Setting", L"TestMix", cstr, m_Ini);
|
|
}
|
|
#endif
|
|
|
|
void CDiskMarkDlg::UpdateUnitLabel()
|
|
{
|
|
if (m_Profile == PROFILE_DEMO)
|
|
{
|
|
if (m_IndexTestUnit == SCORE_UNIT::SCORE_IOPS)
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"Read", L"IOPS");
|
|
m_TestWrite0.SetLabelUnit(L"Write", L"IOPS");
|
|
}
|
|
else if (m_IndexTestUnit == SCORE_UNIT::SCORE_US)
|
|
{
|
|
if (m_ReadLatency[8] >= 1000000)
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"Read", L"ms");
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"Read", L"μs");
|
|
}
|
|
|
|
if (m_WriteLatency[8] >= 1000000)
|
|
{
|
|
m_TestWrite0.SetLabelUnit(L"Write", L"ms");
|
|
}
|
|
else
|
|
{
|
|
m_TestWrite0.SetLabelUnit(L"Write", L"μs");
|
|
}
|
|
}
|
|
else if (m_IndexTestUnit == SCORE_UNIT::SCORE_GBS)
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"Read", L"GB/s");
|
|
m_TestWrite0.SetLabelUnit(L"Write", L"GB/s");
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"Read", L"MB/s");
|
|
m_TestWrite0.SetLabelUnit(L"Write", L"MB/s");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_TestRead0.SetLabelUnit(L"", L"");
|
|
m_TestWrite0.SetLabelUnit(L"", L"");
|
|
}
|
|
|
|
m_TestRead0.Invalidate();
|
|
m_TestWrite0.Invalidate();
|
|
|
|
if (m_Profile == PROFILE_REAL || m_Profile == PROFILE_REAL_MIX)
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (MB/s)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (MB/s)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (MB/s)");
|
|
#endif
|
|
return;
|
|
}
|
|
else if (m_Profile == PROFILE_PEAK || m_Profile == PROFILE_PEAK_MIX)
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (MB/s)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (MB/s)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (MB/s)");
|
|
#endif
|
|
return;
|
|
}
|
|
|
|
if (m_IndexTestUnit == SCORE_UNIT::SCORE_IOPS)
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (IOPS)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (IOPS)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (IOPS)");
|
|
#endif
|
|
}
|
|
else if (m_IndexTestUnit == SCORE_UNIT::SCORE_US)
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (μs)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (μs)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (μs)");
|
|
#endif
|
|
}
|
|
else if (m_IndexTestUnit == SCORE_UNIT::SCORE_GBS)
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (GB/s)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (GB/s)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (GB/s)");
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
m_ReadUnit.SetWindowTextW(L"Read (MB/s)");
|
|
m_WriteUnit.SetWindowTextW(L"Write (MB/s)");
|
|
#ifdef MIX_MODE
|
|
m_MixUnit.SetWindowTextW(L"Mix (MB/s)");
|
|
#endif
|
|
}
|
|
}
|
|
|
|
void CDiskMarkDlg::SetWindowTitle(CString message)
|
|
{
|
|
CString title;
|
|
|
|
if (!message.IsEmpty())
|
|
{
|
|
title.Format(L"%s", message.GetString());
|
|
}
|
|
else
|
|
{
|
|
title.Format(L"%s %s %s", PRODUCT_NAME, PRODUCT_VERSION, PRODUCT_EDITION);
|
|
}
|
|
|
|
if (m_AdminMode)
|
|
{
|
|
title += L" [Admin]";
|
|
}
|
|
|
|
if (m_TestData == TEST_DATA_ALL0X00)
|
|
{
|
|
title += L" <0Fill>";
|
|
}
|
|
|
|
SetWindowText(L" " + title + L" ");
|
|
}
|
|
|
|
void CDiskMarkDlg::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
// Move Focus to Hide Control
|
|
GetDlgItem(IDC_HIDE)->SetFocus();
|
|
|
|
CMainDialogFx::OnLButtonDown(nFlags, point);
|
|
} |