#if !defined(AFX_DLGFONTSELECT_H__BE40E118_A171_4369_BC39_9CA2DA77048D__INCLUDED_)
#define AFX_DLGFONTSELECT_H__BE40E118_A171_4369_BC39_9CA2DA77048D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DlgFontSelect.h : _xZkqqHx_iDhHiDgCiDfPiBfL_xHqqkZx_ _xZkqqHx_iDhEiDeAiDeDiDiL_xHqqkZx_
//

// 03.05.03 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//#include <map>					// for map.
#include "StcText.h"			// For CFCStcText.
#include "CmbColorRef.h"		// For CFCCmbColorRef.
#include "FSpinBtnCtrl.h"		// For CFCFSpinBtnCtrl.
#include "DlgFontSelectSub.h"	// For CFCDLGFONTSELECT.
#include "DialogBase.h"		// For Baseclass.

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS CFCDialogBase

struct FCFontCharInfo;

typedef void (*FPGetFontInfoProc)(FCFontCharInfo& fciExtCode,
									FCFontCharInfo& fciStdCode, void* pData);
typedef void (*FPSetFontInfoProc)(const FCFontCharInfo& fciExtCode,
									const FCFontCharInfo& fciStdCode, void* pData);

typedef map<WORD, WString> FTCharSetMap;
//----------------------------------------------------------
// FTCharSetMap
// WORD _xZkqqHx_iCmN_xHqqkZx_CharSet_xZkqqHx_iBeB_xHqqkZx_WString _xZkqqHx_iCmN_xHqqkZx_CharSet_xZkqqHx_iCmMjGlMjBePiBeCiJkCjFlGiBeBjDpKjGhLiMoKjDjJ_xHqqkZx_
//----------------------------------------------------------

typedef map<WString, FTCharSetMap> FTFontCharSetMap;

/////////////////////////////////////////////////////////////////////////////
// CFCDlgFontSelect _xZkqqHx_iDfPiDeDiDeBiDiNiDeP_xHqqkZx_

class CFCDlgFontSelect : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;

// _xZkqqHx_iDfCiDjDiDfIiDgHiDiJiDeOiDfGiDiHiDjD_xHqqkZx_
public:
	CFCDlgFontSelect (DWORD dwId = CFCDlgFontSelect::IDD, CWnd* pParent = NULL);

// _xZkqqHx_iDfPiDeDiDeBiDiNiDeP_xHqqkZx_ _xZkqqHx_iDgGiBfLiDfO_xHqqkZx_
	//{{AFX_DATA(CFCDlgFontSelect)
	enum { IDD = IDD_COM_FONT_SELECT };
	CFCStcText	m_stcExtCodeSample;
	CFCStcText	m_stcStdCodeSample;
	CFCCmbColorRef	m_cbbColorRef;
	CFCFSpinBtnCtrl	m_spnChrOffset;
	CFCFSpinBtnCtrl	m_spnChrAfter;
	//}}AFX_DATA

CFCDLGFONTSELECT

// _xZkqqHx_iDiGiBfLiDfFiKnGjAjEiBeC_xHqqkZx_
public:
	virtual const FCFontCharInfo& GetExtCodeFontCharInfo () const;
	virtual const FCFontCharInfo& GetStdCodeFontCharInfo () const;
	virtual void	SetExtCodeFontCharInfo (const FCFontCharInfo& fci);
	virtual void	SetStdCodeFontCharInfo (const FCFontCharInfo& fci);
	virtual void	SetCallback (FPGetFontInfoProc fncGetFontInfo,
								FPSetFontInfoProc fncSetFontInfo, void* pData);
protected:
	virtual const FTCharSetMap&	GetCharSetMap (const wchar_t* tcpFontName) const;
	virtual WORD	StrToCharSet (const wchar_t* tcpCharSet, const wchar_t* tcpFontName) const;
	virtual const wchar_t*	CharSetToStr (WORD wCharSet, const wchar_t* tcpFontName) const;
	virtual void	UpdateStdCodeWeightItalic ();
	virtual void	UpdateExtCodeWeightItalic ();

	virtual void	GetStdCodeFontCharInfo (FCFontCharInfo& fci) const;
	virtual void	GetExtCodeFontCharInfo (FCFontCharInfo& fci) const;

	virtual void	RemodelStdFontStyle (BOOL bStdStyle);

	static void	NormalizeFontCharInfo (FCFontCharInfo& fci);

// _xZkqqHx_iDiGiBfLiDfFjFmPjAjEiBeC_xHqqkZx_
protected:
	FCFontCharInfo		m_fciExtCode;			// ANSI_xZkqqHx_jFlGiOjKiPoOjFpBiBeC_xHqqkZx_
	FCFontCharInfo		m_fciStdCode;			// SJIS_xZkqqHx_jFlGiOjKiPoOjFpBiBeC_xHqqkZx_

	FPGetFontInfoProc	m_fncGetFontInfo;		// _xZkqqHx_iDhEiDeIiDjDiDgHiPoOjFpBiOoGjDlOiDfCiBfLiDiLiDgPiDgCiDeOiBeC_xHqqkZx_
	FPSetFontInfoProc	m_fncSetFontInfo;		// _xZkqqHx_iDhEiDeIiDjDiDgHiPoOjFpBjAnNjCoIiDfCiBfLiDiLiDgPiDgCiDeOiBeC_xHqqkZx_
	void*				m_pData;				// _xZkqqHx_iDfCiBfLiDiLiDgPiDgCiDeOjHhAiDgGiBfLiDfOiBeC_xHqqkZx_

	WStringSet			m_stStdCodeFontName;	// _xZkqqHx_jDpKjGhLiMoKiDhEiDeIiDjDiDgHjGlMiCmMiDiKiDfIiDgHiBeC_xHqqkZx_
	FTFontCharSetMap	m_mpExtCodeFontMap;		// [_xZkqqHx_iJhAiMoKiDhEiDeIiDjDiDgHjGlM_xHqqkZx_ -> _xZkqqHx_iOoNjHnOiDiKiDfIiDgH_xHqqkZx_]_xZkqqHx_iCmMiDiKiDfIiDgHiBeC_xHqqkZx_

	//------------------------------------------------------
	// m_stStdCodeWeightItalic_xZkqqHx_iBeB_xHqqkZx_m_stExtCodeWeightItalic
	// DWORD _xZkqqHx_iCmMiPoDiImK_xHqqkZx_16Bit_xZkqqHx_iCmN_xHqqkZx_ Weight_xZkqqHx_iBeBiJlKiImK_xHqqkZx_16Bit _xZkqqHx_iCmN_xHqqkZx_bItalic_xZkqqHx_iBeC_xHqqkZx_
	//------------------------------------------------------
	DWORDSet			m_stStdCodeWeightItalic;	// _xZkqqHx_jDpKjGhLiMoKiDhEiDeIiDjDiDgHiDfIiDfOiDeDiDiLiCmMiDiKiDfIiDgHiBeC_xHqqkZx_
	DWORDSet			m_stExtCodeWeightItalic;	// _xZkqqHx_iJhAiMoKiDhEiDeIiDjDiDgHiDfIiDfOiDeDiDiLiCmMiDiKiDfIiDgHiBeC_xHqqkZx_

// _xZkqqHx_iDeJiBfLiDgPiBfLiDiJiDeDiDgI_xHqqkZx_
	// ClassWizard _xZkqqHx_iCmNiJlMjBhKiKnGjAjEiCmMiDeJiBfLiDgPiBfLiDiJiDeDiDgIiCpAjAlGjAkMiClFiCnMiClHiBeC_xHqqkZx_
	//{{AFX_VIRTUAL(CFCDlgFontSelect)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV _xZkqqHx_iDfEiDhMiBfLiDgH_xHqqkZx_
	//}}AFX_VIRTUAL

// _xZkqqHx_iDeDiDjDiDhGiDiKiDiBiDjDiDgFiBfLiDfGiDiHiDjD_xHqqkZx_
protected:

	// _xZkqqHx_jAlGjAkMiClDiCoKiClNiDiBiDgCiDfKiBfLiDfH_xHqqkZx_ _xZkqqHx_iDhNiDgCiDhGiKnGjAjE_xHqqkZx_
	//{{AFX_MSG(CFCDlgFontSelect)
	virtual BOOL OnInitDialog();
	virtual void OnOK();
	afx_msg void OnApplyNow();
	afx_msg void OnDialogInitValue();
	afx_msg void OnEditchangeFosCmbStdCodeFontName();
	afx_msg void OnSelchangeFosCmbStdCodeFontName();
	afx_msg void OnEditchangeFosCmbStdCodeFontStyle();
	afx_msg void OnSelchangeFosCmbStdCodeFontStyle();
	afx_msg void OnFosChkSyncFontInfo();
	afx_msg void OnEditchangeFosCmbExtCodeFontName();
	afx_msg void OnSelchangeFosCmbExtCodeFontName();
	afx_msg void OnEditchangeFosCmbExtCodeFontStyle();
	afx_msg void OnSelchangeFosCmbExtCodeFontStyle();
	afx_msg void OnEditchangeFosCmbExtCodeFontScript();
	afx_msg void OnSelchangeFosCmbExtCodeFontScript();
	afx_msg void OnEditchangeFosCmbFontSize();
	afx_msg void OnSelchangeFosCmbFontSize();
	afx_msg void OnChangeFosEdtChrOffset();
	afx_msg void OnChangeFosEdtChrAfter();
	afx_msg void OnSelchangeFosCmbChrSupSub();
	afx_msg void OnSelchangeFosCmbStrikeout();
	afx_msg void OnSelchangeFosCmbUnderline();
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	afx_msg void OnCloseupFosCmbExtCodeFontName();
	afx_msg void OnCloseupFosCmbStdCodeFontName();
	afx_msg void OnCloseupFosCmbStdCodeFontStyle();
	afx_msg void OnCloseupFosCmbExtCodeFontScript();
	afx_msg void OnCloseupFosCmbExtCodeFontStyle();
	afx_msg void OnCloseupFosCmbFontSize();
	afx_msg void OnFosBtnColor();
	afx_msg void OnFosChkStdFontPanel();
	//}}AFX_MSG
	afx_msg void OnSelchangeFosCbbColor();
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ _xZkqqHx_iCmNjBePiNhDiCmMjClMjBePiCmJjCmHiJmBiCmMjAoJiMlOiCpAjBhNjDpMiClFiCnMiClHiBeC_xHqqkZx_

#endif // !defined(AFX_DLGFONTSELECT_H__BE40E118_A171_4369_BC39_9CA2DA77048D__INCLUDED_)
