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

📄 base64stringdlg.cpp

📁 Base64编码算法, 可以分别对字符串和文件进行编码/解码,带进度条, 内含VC++6.0源码
💻 CPP
字号:
// Base64StringDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Base64Proj.h"
#include "Base64StringDlg.h"

#include "Base64ProjDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBase64StringDlg dialog


CBase64StringDlg::CBase64StringDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBase64StringDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBase64StringDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CBase64StringDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBase64StringDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBase64StringDlg, CDialog)
	//{{AFX_MSG_MAP(CBase64StringDlg)
	ON_EN_CHANGE(IDC_EDIT_INPUT, OnChangeEditInput)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBase64StringDlg message handlers

void CBase64StringDlg::OnChangeEditInput() 
{
	CString strInput;
	GetDlgItemText(IDC_EDIT_INPUT, strInput);
	if(strInput.IsEmpty())
	{
		SetDlgItemText(IDC_EDIT_OUTPUT, "");
		return ;
	}

	// 加密
	if(((CBase64ProjDlg*)AfxGetMainWnd())->IsEncode())
	{
		string strResult = m_Base64.Encode((unsigned char *)(LPCTSTR)strInput, strInput.GetLength());
		SetDlgItemText(IDC_EDIT_OUTPUT, strResult.c_str());
	}

	// 解密
	else
	{
		string strResult = m_Base64.Decode((unsigned char *)(LPCTSTR)strInput, strInput.GetLength());
		SetDlgItemText(IDC_EDIT_OUTPUT, strResult.c_str());
	}
}

LRESULT CBase64StringDlg::EditProc1(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if(uMsg == WM_KEYDOWN)
	{
		if((GetAsyncKeyState(VK_CONTROL) & 0x8000)) 
		{
			if(wParam ==  'A' || wParam ==  'a') 
			{
				CString strInput;
				GetDlgItemText(IDC_EDIT_INPUT, strInput);
				::SendMessage(GetDlgItem(IDC_EDIT_INPUT)->m_hWnd, EM_SETSEL, 0, strInput.GetLength());
				return 1;
			}
		}
	}
	return CallWindowProc(m_PrevProc1, hWnd, uMsg, wParam, lParam);
}

LRESULT CBase64StringDlg::EditProc2(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if(uMsg == WM_KEYDOWN)
	{
		if((GetAsyncKeyState(VK_CONTROL) & 0x8000)) 
		{
			if(wParam ==  'A' || wParam ==  'a') 
			{
				CString strInput;
				GetDlgItemText(IDC_EDIT_OUTPUT, strInput);
				::SendMessage(GetDlgItem(IDC_EDIT_OUTPUT)->m_hWnd, EM_SETSEL, 0, strInput.GetLength());
				return 1;
			}
		}
	}
	return CallWindowProc(m_PrevProc2, hWnd, uMsg, wParam, lParam);
}

BOOL CBase64StringDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	void* proc1 = m_Thunk1.Stdcall(this, Thunk::GetMemberFxnAddr(&CBase64StringDlg::EditProc1));
	m_PrevProc1 = (WNDPROC)::SetWindowLong(GetDlgItem(IDC_EDIT_INPUT)->m_hWnd, GWL_WNDPROC, (LONG)proc1);

	void* proc2 = m_Thunk2.Stdcall(this, Thunk::GetMemberFxnAddr(&CBase64StringDlg::EditProc2));
	m_PrevProc2 = (WNDPROC)::SetWindowLong(GetDlgItem(IDC_EDIT_OUTPUT)->m_hWnd, GWL_WNDPROC, (LONG)proc2);

	return TRUE;
}

⌨️ 快捷键说明

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