⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogentropy.cpp

📁 实现Huffman编码统计压缩算法
💻 CPP
字号:
           // DialogEntropy.cpp : implementation file
//

#include "stdafx.h"
#include "NewTab.h"
#include "DialogEntropy.h"

extern En_Decode Coder;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDialogEntropy dialog


CDialogEntropy::CDialogEntropy(CWnd* pParent /*=NULL*/)
	: CTabPageSSL(CDialogEntropy::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDialogEntropy)
	m_bEnDeCode = 0;
	//}}AFX_DATA_INIT
}


void CDialogEntropy::DoDataExchange(CDataExchange* pDX)
{
	CTabPageSSL::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDialogEntropy)
	DDX_Radio(pDX, IDC_RADIO_ENCODE, m_bEnDeCode);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDialogEntropy, CTabPageSSL)
	//{{AFX_MSG_MAP(CDialogEntropy)
	ON_BN_CLICKED(IDC_BUTTON_Open, OnBUTTONOpen)
	ON_BN_CLICKED(IDC_BUTTON_Decode, OnBUTTONDecode)
	ON_BN_CLICKED(IDC_RADIO_DECODE, OnRadioDecode)
	ON_BN_CLICKED(IDC_RADIO_ENCODE, OnRadioEncode)
	ON_BN_CLICKED(IDC_BUTTON_DESTFILE, OnButtonDestfile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDialogEntropy message handlers

void CDialogEntropy::OnBUTTONOpen()
{
	// TODO: Add your control notification handler code here
	CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,"All Files(*.*)|*.*|",this);
	fileDialog.m_ofn.Flags|=OFN_EXPLORER;
	if(fileDialog.DoModal() != IDOK)
		return;
	CString strFilename=fileDialog.GetPathName();
	CEdit *inEdit;
	inEdit = (CEdit *)GetDlgItem(IDC_EDIT_INFILE);
	inEdit->SetWindowText(strFilename);
	lstrcpy(InFileName, strFilename);
	strFilename=fileDialog.GetFileExt();
	lstrcpy(ExtName, strFilename);
	Coder.SetInputFileName(InFileName, ExtName);
}

void CDialogEntropy::OnBUTTONDecode() 
{
	// TODO: Add your control notification handler code here
	if (m_bEnDeCode)
		Coder.Decode();
	else
		Coder.Encode();
	SetFileInfo();
}

BOOL CDialogEntropy::OnInitDialog() 
{
	CTabPageSSL::OnInitDialog();
	
	// TODO: Add extra initialization here
//	CSpinButtonCtrl* pBoxOne;
//	pBoxOne = (CSpinButtonCtrl*) GetDlgItem(IDC_RADIO_ENCODE);
//	pBoxOne

	//GetDlgItem(IDC_RADIO_ENCODE) ;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDialogEntropy::OnRadioDecode() 
{
	// TODO: Add your control notification handler code here
	m_bEnDeCode = 1;
}

void CDialogEntropy::OnRadioEncode() 
{
	// TODO: Add your control notification handler code here
	m_bEnDeCode = 0;
}

void CDialogEntropy::OnButtonDestfile() 
{
	// TODO: Add your control notification handler code here
	if (m_bEnDeCode)
	{
		Coder.GetExtName(ExtName);
		CString temp;
		CString strFilename("Source File(*.");
		temp.Format("%s", ExtName);
		strFilename += temp;
		temp.Format("%s", ")|*.");
		strFilename += temp;
		temp.Format("%s", ExtName);
		strFilename += temp;
		temp.Format("%s", "|");
		strFilename += temp;
		char szFilter[30];
		lstrcpy(szFilter, strFilename);
		CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFilter,this);
		fileDialog.m_ofn.Flags |= OFN_EXPLORER;
		if(fileDialog.DoModal() != IDOK)
			return;
		strFilename = fileDialog.GetPathName();
		temp.Format(".%s", ExtName);
		strFilename += temp;
		CEdit *inEdit;
		inEdit = (CEdit *)GetDlgItem(IDC_EDIT_OUTFILE);
		inEdit->SetWindowText(strFilename);
		lstrcpy(OutFileName, strFilename);
		Coder.SetOutputFileName(OutFileName);
	}
	else
	{
		CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,"All Files(*.*)|*.*|",this);
		fileDialog.m_ofn.Flags|=OFN_EXPLORER;
		if(fileDialog.DoModal() != IDOK)
			return;
		CString strFilename = fileDialog.GetPathName();
		CEdit *inEdit;
		inEdit = (CEdit *)GetDlgItem(IDC_EDIT_OUTFILE);
		inEdit->SetWindowText(strFilename);
		TCHAR sz[256];
		lstrcpy(sz, strFilename);
		Coder.SetOutputFileName(sz);
	}
}

void CDialogEntropy::SetFileInfo()
{
	CString str;
	CEdit *inEdit;
	unsigned int i = Coder.GetActualDataLength();
	unsigned int j = Coder.GetUncodedFileLength();
	double t = static_cast<double>(i);
	t /= j;

	str.Format("%d", j);
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_SOURCELENGTH);
	inEdit->SetWindowText(str);

	str.Format("%f", Coder.GetUncodedFileCodeLength() );
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_ENTROPY);
	inEdit->SetWindowText(str);

	str.Format("%f", Coder.GetSourceFileEntropy());
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_CODELENGTH);
	inEdit->SetWindowText(str);

	str.Format("%d", Coder.GetActiveSymbols());
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_HEAD_LENGTH);
	inEdit->SetWindowText(str);

	str.Format("%d", i);
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_ACTUAL_LENGTH);
	inEdit->SetWindowText(str);

	str.Format("%f", t);
	inEdit = (CEdit *)GetDlgItem(IDC_STATIC_RATE);
	inEdit->SetWindowText(str);

//	delete inEdit;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -