// HashCalc.cpp : 定义应用程序的类行为。
//

#include "stdafx.h"
#include "HashCalc.h"
#include "HashCalcDlg.h"
#include "Localization.h"
#include <afxsock.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CHashCalcApp

BEGIN_MESSAGE_MAP(CHashCalcApp, CWinApp)
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()


// CHashCalcApp 构造

CHashCalcApp::CHashCalcApp()
{
	// TODO: 在此处添加构造代码，
	// 将所有重要的初始化放置在 InitInstance 中
	bCancelHashing = false;
	m_lid = 0;
}


// 唯一的一个 CHashCalcApp 对象

CHashCalcApp theApp;

UINT g_uCustomClipbrdFormat = RegisterClipboardFormat ( _T("HashCalc_3BCFE9D1_6D61_4cb6_9D0B_3BB3F643CA82") );

// CHashCalcApp 初始化

BOOL CHashCalcApp::InitInstance()
{
	// 如果一个运行在 Windows XP 上的应用程序清单指定要
	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式，
	//则需要 InitCommonControls()。否则，将无法创建窗口。
	InitCommonControls();

	CWinApp::InitInstance();

	AfxEnableControlContainer();

    AfxOleInit();
	AfxSocketInit ();
	// 标准初始化
	// 如果未使用这些功能并希望减小
	// 最终可执行文件的大小，则应移除下列
	// 不需要的特定初始化例程
	// 更改用于存储设置的注册表项
	// TODO: 应适当修改该字符串，
	// 例如修改为公司或组织名
	//SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

	CCommandLineInfo cmdInfo;
	int iMethod = 0;

	if (__argc > 1)
	{
		CString strPath = _T("");
		CString strParams = _T("");
		for (int i = 1; i < __argc; i++)
		{
			LPCTSTR pszParam = __targv[i];
			BOOL bFlag = FALSE;
			BOOL bLast = ((i + 1) == __argc);
			if (pszParam[0] == '-' || pszParam[0] == '/')
			{
				bFlag = TRUE;
				strParams = pszParam;
				++pszParam;

				CString strMethod = strParams.Right( strParams.ReverseFind(_T('=')) - 1 );
				iMethod = atoi (strMethod);
			}
			else
			{
				strPath = pszParam;
				m_saSourceFiles.Add( strPath );
			}

			cmdInfo.ParseParam(pszParam, bFlag, bLast);
		}

	}


	CHashCalcDlg dlg;
	m_pMainWnd = &dlg;
	m_pHashCalcDlg = &dlg;
	dlg.m_nEncode = iMethod;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: 在此放置处理何时用“确定”来关闭
		//对话框的代码
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用“取消”来关闭
		//对话框的代码
	}

	// 由于对话框已关闭，所以将返回 FALSE 以便退出应用程序，
	// 而不是启动应用程序的消息泵。
	return FALSE;
}

void CHashCalcApp::SetLang(LANGID lid)
{
	if (IsLangSupported(lid))
		m_lid = lid;
	else
		m_lid = MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT);
	SetThreadLocale(m_lid);
}