📄 imagesizedialog.cpp
字号:
// ImageSizeDialog.cpp : implementation file
//
#include "stdafx.h"
#include "Rader.h"
#include "ImageSizeDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageSizeDialog dialog
CImageSizeDialog::CImageSizeDialog(CWnd* pParent /*=NULL*/)
: CDialog(CImageSizeDialog::IDD, pParent)
{
dwFileLength = 0;
m_dwImageSize = 0;
NowPos = 1;
pLarge = NULL;
pSmall = NULL;
//{{AFX_DATA_INIT(CImageSizeDialog)
m_nBits = 0;
m_dwHeight = 0;
m_dwWidth = 0;
m_FileSize = 0;
//}}AFX_DATA_INIT
}
CImageSizeDialog::~CImageSizeDialog()
{
if(NULL != pLarge)
delete[] pLarge;
if(NULL != pSmall)
delete[] pSmall;
}
void CImageSizeDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CImageSizeDialog)
DDX_CBIndex(pDX, IDC_COMBO_BITS, m_nBits);
DDX_Text(pDX, IDC_HEIGHT, m_dwHeight);
DDV_MinMaxDWord(pDX, m_dwHeight, 0, 999999);
DDX_Text(pDX, IDC_WIDTH, m_dwWidth);
DDV_MinMaxDWord(pDX, m_dwWidth, 0, 999999);
DDX_Text(pDX, IDC_EDIT3, m_FileSize);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CImageSizeDialog, CDialog)
//{{AFX_MSG_MAP(CImageSizeDialog)
// NOTE: the ClassWizard will add message map macros here
ON_BN_CLICKED(IDC_BUTTON_LARGE, OnButtonLarge)
ON_BN_CLICKED(IDC_BUTTON_SMALL, OnButtonSmall)
ON_CBN_CLOSEUP(IDC_COMBO_BITS, OnCloseupCombo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageSizeDialog message handlers
BOOL CImageSizeDialog::OnInitDialog()
{
CDialog::OnInitDialog();
switch(sizeof(UNDATA))
{
case sizeof(BYTE):
m_nBits = 0;
break;
case sizeof(unsigned short):
m_nBits = 1;
break;
case sizeof(DWORD):
m_nBits = 2;
break;
}
UpdateData(FALSE);
GetImageSize();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CImageSizeDialog::GetImageSize()
{
UpdateData(TRUE);
switch(m_nBits)
{
case 0:
m_dwImageSize = dwFileLength;
break;
case 1:
m_dwImageSize = dwFileLength / 2;
break;
case 2:
m_dwImageSize = dwFileLength / 4;
break;
default:
ASSERT(FALSE);
break;
}
DWORD i;
DWORD MinDiffernt = 9999999;
TotalCount = 0;
for(i = 1; i <= m_dwImageSize; i++)
{
if(m_dwImageSize % i == 0)
TotalCount ++;
}
ASSERT(TotalCount > 0);
pLarge = new DWORD[TotalCount];
pSmall = new DWORD[TotalCount];
NowPos = 0;
for(i = 1; i <= m_dwImageSize; i++)
{
if(m_dwImageSize % i == 0)
{
pSmall[NowPos] = i;
pLarge[NowPos] = m_dwImageSize / i;
if(MinDiffernt > (DWORD)abs(pLarge[NowPos] - pSmall[NowPos]))
{
MinDiffernt = (DWORD)abs(pLarge[NowPos] - pSmall[NowPos]);
dwDataPos = NowPos;
}
ASSERT((pSmall[NowPos] * pLarge[NowPos]) == m_dwImageSize);
NowPos ++;
}
}
ASSERT(NowPos == TotalCount);
///////////////
m_FileSize = dwFileLength;
m_dwWidth = pLarge[dwDataPos];
m_dwHeight = pSmall[dwDataPos];
UpdateData(FALSE);
}
void CImageSizeDialog::OnButtonLarge()
{
if(dwDataPos < TotalCount - 1)
{
dwDataPos ++;
m_dwWidth = pLarge[dwDataPos];
m_dwHeight = pSmall[dwDataPos];
UpdateData(FALSE);
}
}
void CImageSizeDialog::OnButtonSmall()
{
if(dwDataPos > 0)
{
dwDataPos --;
m_dwWidth = pLarge[dwDataPos];
m_dwHeight = pSmall[dwDataPos];
UpdateData(FALSE);
}
}
void CImageSizeDialog::OnCloseupCombo()
{
BeginWaitCursor();
GetImageSize();
EndWaitCursor();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -