////////////////////////////////////////////////////////////////////////////////
//  CQ出版社 インターフェース 2008年7月号
//
//  初音ミク（はちゅねみく）・アニメーション
//  画像変換ツール	Copyright(c)2008 Sumio Morioka
//  morioka@fb3.so-net.ne.jp,  http://www002.upp.so-net.ne.jp/morioka/
//
//  本プログラムコードの商業利用，および改変ファイルの二次配布を禁じます．それ以外の
//  利用はとくに制限しませんが，利用によって生じた被害・不利益などに対しては，一切
//  責任を負いませんのでご了承ください．
//
//  また，本プログラムのサンプルとして同梱される初音ミク，はちゅねミク，鏡音リン・レンの
//  画像（フォント・データも含む）は，クリプトン・フューチャー・メディア株式会社
// （http://www.crypton.co.jp）の著作物です．商業利用等については同社へ問い合わせてください．
//
//
// History:
// 1. Original coding by Sumio Morioka, 2008/04/18
//
////////////////////////////////////////////////////////////////////////////////

// bmp2FRfontDlg.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "bmp2FRfont.h"
#include "bmp2FRfontDlg.h"

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

///////////////////////////////////////////////////////////////////////////
// APPENDED

#define	OUT_BMP_FNAME			"out.bmp"
#define	OUT_PEDPALETTE_FNAME	"out.pal"
#define	OUT_REGPALETTE_FNAME	"out.h"
#define	OUT_HEX_FNAME			"out-FLASH-C.hex"


#include	"bmp2FRfontMain.h"
BMP2FRFONT_DATA	MainData;

#include	"bmp2FRfontMain.c"

#define MAX_PATHNAME	8192
char	*PathName;

/////////////////////////////////////////////////////////////////////////////
// CBmp2FRfontDlg ダイアログ

CBmp2FRfontDlg::CBmp2FRfontDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBmp2FRfontDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBmp2FRfontDlg)
	m_infname = _T("");
	m_bmpgrid = FALSE;
	m_fontrange = FALSE;
	m_pltsw0 = FALSE;
	m_pltsw1 = FALSE;
	m_pltsw10 = FALSE;
	m_pltsw11 = FALSE;
	m_pltsw12 = FALSE;
	m_pltsw13 = FALSE;
	m_pltsw14 = FALSE;
	m_pltsw15 = FALSE;
	m_pltsw2 = FALSE;
	m_pltsw3 = FALSE;
	m_pltsw5 = FALSE;
	m_pltsw4 = FALSE;
	m_pltsw6 = FALSE;
	m_pltsw7 = FALSE;
	m_pltsw8 = FALSE;
	m_pltsw9 = FALSE;
	m_fontstart = FALSE;
	m_b0 = 0;
	m_b1 = 0;
	m_b10 = 0;
	m_b11 = 0;
	m_b12 = 0;
	m_b13 = 0;
	m_b14 = 0;
	m_b15 = 0;
	m_b2 = 0;
	m_b3 = 0;
	m_b4 = 0;
	m_b5 = 0;
	m_b6 = 0;
	m_b7 = 0;
	m_b8 = 0;
	m_b9 = 0;
	m_fontnum = 0;
	m_fromx = 1;
	m_fromy = 1;
	m_g0 = 0;
	m_g1 = 0;
	m_g10 = 0;
	m_g11 = 0;
	m_g12 = 0;
	m_g13 = 0;
	m_g14 = 0;
	m_g15 = 0;
	m_g2 = 0;
	m_g3 = 0;
	m_g4 = 0;
	m_g5 = 0;
	m_g6 = 0;
	m_g7 = 0;
	m_g8 = 0;
	m_g9 = 0;
	m_r0 = 0;
	m_r1 = 0;
	m_r10 = 0;
	m_r11 = 0;
	m_r12 = 0;
	m_r13 = 0;
	m_r14 = 0;
	m_r15 = 0;
	m_r2 = 0;
	m_r3 = 0;
	m_r4 = 0;
	m_r5 = 0;
	m_r6 = 0;
	m_r7 = 0;
	m_r8 = 0;
	m_r9 = 0;
	m_status = _T("");
	m_tox = 1;
	m_toy = 1;
	m_forceb = 0;
	m_forceg = 0;
	m_forceplt = 0;
	m_forcer = 0;
	m_thru = FALSE;
	//}}AFX_DATA_INIT
	// メモ: LoadIcon は Win32 の DestroyIcon のサブシーケンスを要求しません。
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CBmp2FRfontDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBmp2FRfontDlg)
	DDX_Text(pDX, IDC_EDIT_INFILE, m_infname);
	DDX_Check(pDX, IDC_CHECK_BMPGRID, m_bmpgrid);
	DDX_Check(pDX, IDC_CHECK_FONTRANGE, m_fontrange);
	DDX_Check(pDX, IDC_CHECK_PLTSW0, m_pltsw0);
	DDX_Check(pDX, IDC_CHECK_PLTSW1, m_pltsw1);
	DDX_Check(pDX, IDC_CHECK_PLTSW10, m_pltsw10);
	DDX_Check(pDX, IDC_CHECK_PLTSW11, m_pltsw11);
	DDX_Check(pDX, IDC_CHECK_PLTSW12, m_pltsw12);
	DDX_Check(pDX, IDC_CHECK_PLTSW13, m_pltsw13);
	DDX_Check(pDX, IDC_CHECK_PLTSW14, m_pltsw14);
	DDX_Check(pDX, IDC_CHECK_PLTSW15, m_pltsw15);
	DDX_Check(pDX, IDC_CHECK_PLTSW2, m_pltsw2);
	DDX_Check(pDX, IDC_CHECK_PLTSW3, m_pltsw3);
	DDX_Check(pDX, IDC_CHECK_PLTSW5, m_pltsw5);
	DDX_Check(pDX, IDC_CHECK_PLTSW4, m_pltsw4);
	DDX_Check(pDX, IDC_CHECK_PLTSW6, m_pltsw6);
	DDX_Check(pDX, IDC_CHECK_PLTSW7, m_pltsw7);
	DDX_Check(pDX, IDC_CHECK_PLTSW8, m_pltsw8);
	DDX_Check(pDX, IDC_CHECK_PLTSW9, m_pltsw9);
	DDX_Check(pDX, IDC_CHECK_FONTSTART, m_fontstart);
	DDX_Text(pDX, IDC_EDIT_B0, m_b0);
	DDX_Text(pDX, IDC_EDIT_B1, m_b1);
	DDX_Text(pDX, IDC_EDIT_B10, m_b10);
	DDX_Text(pDX, IDC_EDIT_B11, m_b11);
	DDX_Text(pDX, IDC_EDIT_B12, m_b12);
	DDX_Text(pDX, IDC_EDIT_B13, m_b13);
	DDX_Text(pDX, IDC_EDIT_B14, m_b14);
	DDX_Text(pDX, IDC_EDIT_B15, m_b15);
	DDX_Text(pDX, IDC_EDIT_B2, m_b2);
	DDX_Text(pDX, IDC_EDIT_B3, m_b3);
	DDX_Text(pDX, IDC_EDIT_B4, m_b4);
	DDX_Text(pDX, IDC_EDIT_B5, m_b5);
	DDX_Text(pDX, IDC_EDIT_B6, m_b6);
	DDX_Text(pDX, IDC_EDIT_B7, m_b7);
	DDX_Text(pDX, IDC_EDIT_B8, m_b8);
	DDX_Text(pDX, IDC_EDIT_B9, m_b9);
	DDX_Text(pDX, IDC_EDIT_FONTNUM, m_fontnum);
	DDX_Text(pDX, IDC_EDIT_FROMX, m_fromx);
	DDX_Text(pDX, IDC_EDIT_FROMY, m_fromy);
	DDX_Text(pDX, IDC_EDIT_G0, m_g0);
	DDX_Text(pDX, IDC_EDIT_G1, m_g1);
	DDX_Text(pDX, IDC_EDIT_G10, m_g10);
	DDX_Text(pDX, IDC_EDIT_G11, m_g11);
	DDX_Text(pDX, IDC_EDIT_G12, m_g12);
	DDX_Text(pDX, IDC_EDIT_G13, m_g13);
	DDX_Text(pDX, IDC_EDIT_G14, m_g14);
	DDX_Text(pDX, IDC_EDIT_G15, m_g15);
	DDX_Text(pDX, IDC_EDIT_G2, m_g2);
	DDX_Text(pDX, IDC_EDIT_G3, m_g3);
	DDX_Text(pDX, IDC_EDIT_G4, m_g4);
	DDX_Text(pDX, IDC_EDIT_G5, m_g5);
	DDX_Text(pDX, IDC_EDIT_G6, m_g6);
	DDX_Text(pDX, IDC_EDIT_G7, m_g7);
	DDX_Text(pDX, IDC_EDIT_G8, m_g8);
	DDX_Text(pDX, IDC_EDIT_G9, m_g9);
	DDX_Text(pDX, IDC_EDIT_R0, m_r0);
	DDX_Text(pDX, IDC_EDIT_R1, m_r1);
	DDX_Text(pDX, IDC_EDIT_R10, m_r10);
	DDX_Text(pDX, IDC_EDIT_R11, m_r11);
	DDX_Text(pDX, IDC_EDIT_R12, m_r12);
	DDX_Text(pDX, IDC_EDIT_R13, m_r13);
	DDX_Text(pDX, IDC_EDIT_R14, m_r14);
	DDX_Text(pDX, IDC_EDIT_R15, m_r15);
	DDX_Text(pDX, IDC_EDIT_R2, m_r2);
	DDX_Text(pDX, IDC_EDIT_R3, m_r3);
	DDX_Text(pDX, IDC_EDIT_R4, m_r4);
	DDX_Text(pDX, IDC_EDIT_R5, m_r5);
	DDX_Text(pDX, IDC_EDIT_R6, m_r6);
	DDX_Text(pDX, IDC_EDIT_R7, m_r7);
	DDX_Text(pDX, IDC_EDIT_R8, m_r8);
	DDX_Text(pDX, IDC_EDIT_R9, m_r9);
	DDX_Text(pDX, IDC_EDIT_STATUS, m_status);
	DDX_Text(pDX, IDC_EDIT_TOX, m_tox);
	DDX_Text(pDX, IDC_EDIT_TOY, m_toy);
	DDX_Text(pDX, IDC_EDIT_FORCEB, m_forceb);
	DDX_Text(pDX, IDC_EDIT_FORCEG, m_forceg);
	DDX_Text(pDX, IDC_EDIT_FORCEPLT, m_forceplt);
	DDX_Text(pDX, IDC_EDIT_FORCER, m_forcer);
	DDX_Check(pDX, IDC_CHECK_THRU, m_thru);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CBmp2FRfontDlg, CDialog)
	//{{AFX_MSG_MAP(CBmp2FRfontDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_EN_CHANGE(IDC_EDIT_INFILE, OnChangeEditInfile)
	ON_BN_CLICKED(IDC_BUTTON_INFILE, OnButtonInfile)
	ON_BN_CLICKED(IDC_BUTTON_DEFPLT, OnButtonDefplt)
	ON_BN_CLICKED(IDC_BUTTON_SETPLT, OnButtonSetplt)
	ON_BN_CLICKED(IDC_BUTTON_GENSTART, OnButtonGenstart)
	ON_BN_CLICKED(IDC_CHECK_BMPGRID, OnCheckBmpgrid)
	ON_BN_CLICKED(IDC_BUTTON_GENHEX, OnButtonGenhex)
	ON_BN_CLICKED(IDC_CHECK_FONTSTART, OnCheckFontstart)
	ON_EN_CHANGE(IDC_EDIT_FONTNUM, OnChangeEditFontnum)
	ON_BN_CLICKED(IDC_CHECK_FONTRANGE, OnCheckFontrange)
	ON_EN_CHANGE(IDC_EDIT_FROMY, OnChangeEditFromy)
	ON_EN_CHANGE(IDC_EDIT_FROMX, OnChangeEditFromx)
	ON_EN_CHANGE(IDC_EDIT_TOY, OnChangeEditToy)
	ON_EN_CHANGE(IDC_EDIT_TOX, OnChangeEditTox)
	ON_BN_CLICKED(IDC_CHECK_PLTSW0, OnCheckPltsw0)
	ON_BN_CLICKED(IDC_CHECK_PLTSW1, OnCheckPltsw1)
	ON_BN_CLICKED(IDC_CHECK_PLTSW2, OnCheckPltsw2)
	ON_BN_CLICKED(IDC_CHECK_PLTSW3, OnCheckPltsw3)
	ON_BN_CLICKED(IDC_CHECK_PLTSW4, OnCheckPltsw4)
	ON_BN_CLICKED(IDC_CHECK_PLTSW5, OnCheckPltsw5)
	ON_BN_CLICKED(IDC_CHECK_PLTSW6, OnCheckPltsw6)
	ON_BN_CLICKED(IDC_CHECK_PLTSW7, OnCheckPltsw7)
	ON_BN_CLICKED(IDC_CHECK_PLTSW8, OnCheckPltsw8)
	ON_BN_CLICKED(IDC_CHECK_PLTSW9, OnCheckPltsw9)
	ON_BN_CLICKED(IDC_CHECK_PLTSW10, OnCheckPltsw10)
	ON_BN_CLICKED(IDC_CHECK_PLTSW11, OnCheckPltsw11)
	ON_BN_CLICKED(IDC_CHECK_PLTSW12, OnCheckPltsw12)
	ON_BN_CLICKED(IDC_CHECK_PLTSW13, OnCheckPltsw13)
	ON_BN_CLICKED(IDC_CHECK_PLTSW14, OnCheckPltsw14)
	ON_BN_CLICKED(IDC_CHECK_PLTSW15, OnCheckPltsw15)
	ON_EN_CHANGE(IDC_EDIT_R0, OnChangeEditR0)
	ON_EN_CHANGE(IDC_EDIT_G0, OnChangeEditG0)
	ON_EN_CHANGE(IDC_EDIT_B0, OnChangeEditB0)
	ON_EN_CHANGE(IDC_EDIT_R1, OnChangeEditR1)
	ON_EN_CHANGE(IDC_EDIT_G1, OnChangeEditG1)
	ON_EN_CHANGE(IDC_EDIT_B1, OnChangeEditB1)
	ON_EN_CHANGE(IDC_EDIT_R2, OnChangeEditR2)
	ON_EN_CHANGE(IDC_EDIT_G2, OnChangeEditG2)
	ON_EN_CHANGE(IDC_EDIT_B2, OnChangeEditB2)
	ON_EN_CHANGE(IDC_EDIT_R3, OnChangeEditR3)
	ON_EN_CHANGE(IDC_EDIT_G3, OnChangeEditG3)
	ON_EN_CHANGE(IDC_EDIT_B3, OnChangeEditB3)
	ON_EN_CHANGE(IDC_EDIT_R4, OnChangeEditR4)
	ON_EN_CHANGE(IDC_EDIT_G4, OnChangeEditG4)
	ON_EN_CHANGE(IDC_EDIT_B4, OnChangeEditB4)
	ON_EN_CHANGE(IDC_EDIT_R5, OnChangeEditR5)
	ON_EN_CHANGE(IDC_EDIT_G5, OnChangeEditG5)
	ON_EN_CHANGE(IDC_EDIT_B5, OnChangeEditB5)
	ON_EN_CHANGE(IDC_EDIT_R6, OnChangeEditR6)
	ON_EN_CHANGE(IDC_EDIT_G6, OnChangeEditG6)
	ON_EN_CHANGE(IDC_EDIT_B6, OnChangeEditB6)
	ON_EN_CHANGE(IDC_EDIT_R7, OnChangeEditR7)
	ON_EN_CHANGE(IDC_EDIT_G7, OnChangeEditG7)
	ON_EN_CHANGE(IDC_EDIT_B7, OnChangeEditB7)
	ON_EN_CHANGE(IDC_EDIT_R8, OnChangeEditR8)
	ON_EN_CHANGE(IDC_EDIT_G8, OnChangeEditG8)
	ON_EN_CHANGE(IDC_EDIT_B8, OnChangeEditB8)
	ON_EN_CHANGE(IDC_EDIT_R9, OnChangeEditR9)
	ON_EN_CHANGE(IDC_EDIT_G9, OnChangeEditG9)
	ON_EN_CHANGE(IDC_EDIT_B9, OnChangeEditB9)
	ON_EN_CHANGE(IDC_EDIT_R10, OnChangeEditR10)
	ON_EN_CHANGE(IDC_EDIT_G10, OnChangeEditG10)
	ON_EN_CHANGE(IDC_EDIT_B10, OnChangeEditB10)
	ON_EN_CHANGE(IDC_EDIT_R11, OnChangeEditR11)
	ON_EN_CHANGE(IDC_EDIT_G11, OnChangeEditG11)
	ON_EN_CHANGE(IDC_EDIT_B11, OnChangeEditB11)
	ON_EN_CHANGE(IDC_EDIT_R12, OnChangeEditR12)
	ON_EN_CHANGE(IDC_EDIT_G12, OnChangeEditG12)
	ON_EN_CHANGE(IDC_EDIT_B12, OnChangeEditB12)
	ON_EN_CHANGE(IDC_EDIT_R13, OnChangeEditR13)
	ON_EN_CHANGE(IDC_EDIT_G13, OnChangeEditG13)
	ON_EN_CHANGE(IDC_EDIT_B13, OnChangeEditB13)
	ON_EN_CHANGE(IDC_EDIT_R14, OnChangeEditR14)
	ON_EN_CHANGE(IDC_EDIT_G14, OnChangeEditG14)
	ON_EN_CHANGE(IDC_EDIT_B14, OnChangeEditB14)
	ON_EN_CHANGE(IDC_EDIT_R15, OnChangeEditR15)
	ON_EN_CHANGE(IDC_EDIT_G15, OnChangeEditG15)
	ON_EN_CHANGE(IDC_EDIT_B15, OnChangeEditB15)
	ON_WM_DROPFILES()
	ON_EN_CHANGE(IDC_EDIT_FORCER, OnChangeEditForcer)
	ON_EN_CHANGE(IDC_EDIT_FORCEG, OnChangeEditForceg)
	ON_EN_CHANGE(IDC_EDIT_FORCEB, OnChangeEditForceb)
	ON_EN_CHANGE(IDC_EDIT_FORCEPLT, OnChangeEditForceplt)
	ON_BN_CLICKED(IDC_CHECK_THRU, OnCheckThru)
	ON_BN_CLICKED(IDC_BUTTON_READPAL, OnButtonReadpal)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////
// APPENDED
void CBmp2FRfontDlg::set_palette_value(uint8 plt[PALETTE_ENTRY][PALETTE_COLOR + 1])
{
	m_pltsw0  = (plt[0][3] == 1) ? FALSE : TRUE;
	m_pltsw1  = (plt[1][3] == 1) ? FALSE : TRUE;
	m_pltsw2  = (plt[2][3] == 1) ? FALSE : TRUE;
	m_pltsw3  = (plt[3][3] == 1) ? FALSE : TRUE;
	m_pltsw4  = (plt[4][3] == 1) ? FALSE : TRUE;
	m_pltsw5  = (plt[5][3] == 1) ? FALSE : TRUE;
	m_pltsw6  = (plt[6][3] == 1) ? FALSE : TRUE;
	m_pltsw7  = (plt[7][3] == 1) ? FALSE : TRUE;
	m_pltsw8  = (plt[8][3] == 1) ? FALSE : TRUE;
	m_pltsw9  = (plt[9][3] == 1) ? FALSE : TRUE;
	m_pltsw10 = (plt[10][3] == 1) ? FALSE : TRUE;
	m_pltsw11 = (plt[11][3] == 1) ? FALSE : TRUE;
	m_pltsw12 = (plt[12][3] == 1) ? FALSE : TRUE;
	m_pltsw13 = (plt[13][3] == 1) ? FALSE : TRUE;
	m_pltsw14 = (plt[14][3] == 1) ? FALSE : TRUE;
	m_pltsw15 = (plt[15][3] == 1) ? FALSE : TRUE;

	m_r0  = bmp2FRfont_v8to3(plt[0][0]);
	m_r1  = bmp2FRfont_v8to3(plt[1][0]);
	m_r2  = bmp2FRfont_v8to3(plt[2][0]);
	m_r3  = bmp2FRfont_v8to3(plt[3][0]);
	m_r4  = bmp2FRfont_v8to3(plt[4][0]);
	m_r5  = bmp2FRfont_v8to3(plt[5][0]);
	m_r6  = bmp2FRfont_v8to3(plt[6][0]);
	m_r7  = bmp2FRfont_v8to3(plt[7][0]);
	m_r8  = bmp2FRfont_v8to3(plt[8][0]);
	m_r9  = bmp2FRfont_v8to3(plt[9][0]);
	m_r10 = bmp2FRfont_v8to3(plt[10][0]);
	m_r11 = bmp2FRfont_v8to3(plt[11][0]);
	m_r12 = bmp2FRfont_v8to3(plt[12][0]);
	m_r13 = bmp2FRfont_v8to3(plt[13][0]);
	m_r14 = bmp2FRfont_v8to3(plt[14][0]);
	m_r15 = bmp2FRfont_v8to3(plt[15][0]);

	m_g0  = bmp2FRfont_v8to3(plt[0][1]);
	m_g1  = bmp2FRfont_v8to3(plt[1][1]);
	m_g2  = bmp2FRfont_v8to3(plt[2][1]);
	m_g3  = bmp2FRfont_v8to3(plt[3][1]);
	m_g4  = bmp2FRfont_v8to3(plt[4][1]);
	m_g5  = bmp2FRfont_v8to3(plt[5][1]);
	m_g6  = bmp2FRfont_v8to3(plt[6][1]);
	m_g7  = bmp2FRfont_v8to3(plt[7][1]);
	m_g8  = bmp2FRfont_v8to3(plt[8][1]);
	m_g9  = bmp2FRfont_v8to3(plt[9][1]);
	m_g10 = bmp2FRfont_v8to3(plt[10][1]);
	m_g11 = bmp2FRfont_v8to3(plt[11][1]);
	m_g12 = bmp2FRfont_v8to3(plt[12][1]);
	m_g13 = bmp2FRfont_v8to3(plt[13][1]);
	m_g14 = bmp2FRfont_v8to3(plt[14][1]);
	m_g15 = bmp2FRfont_v8to3(plt[15][1]);

	m_b0  = bmp2FRfont_v8to3(plt[0][2]);
	m_b1  = bmp2FRfont_v8to3(plt[1][2]);
	m_b2  = bmp2FRfont_v8to3(plt[2][2]);
	m_b3  = bmp2FRfont_v8to3(plt[3][2]);
	m_b4  = bmp2FRfont_v8to3(plt[4][2]);
	m_b5  = bmp2FRfont_v8to3(plt[5][2]);
	m_b6  = bmp2FRfont_v8to3(plt[6][2]);
	m_b7  = bmp2FRfont_v8to3(plt[7][2]);
	m_b8  = bmp2FRfont_v8to3(plt[8][2]);
	m_b9  = bmp2FRfont_v8to3(plt[9][2]);
	m_b10 = bmp2FRfont_v8to3(plt[10][2]);
	m_b11 = bmp2FRfont_v8to3(plt[11][2]);
	m_b12 = bmp2FRfont_v8to3(plt[12][2]);
	m_b13 = bmp2FRfont_v8to3(plt[13][2]);
	m_b14 = bmp2FRfont_v8to3(plt[14][2]);
	m_b15 = bmp2FRfont_v8to3(plt[15][2]);

	UpdateData(FALSE);		// variable -> display
}


void CBmp2FRfontDlg::get_palette_value(BMP2FRFONT_DATA *data)
{
	UpdateData(TRUE);		// display -> variable

	(data->plt_data_RGB)[0][0]	= bmp2FRfont_v3to8(m_r0);
	(data->plt_data_RGB)[0][1]	= bmp2FRfont_v3to8(m_g0);
	(data->plt_data_RGB)[0][2]	= bmp2FRfont_v3to8(m_b0);
	(data->plt_data_RGB)[0][3]	= (m_pltsw0 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[1][0]	= bmp2FRfont_v3to8(m_r1);
	(data->plt_data_RGB)[1][1]	= bmp2FRfont_v3to8(m_g1);
	(data->plt_data_RGB)[1][2]	= bmp2FRfont_v3to8(m_b1);
	(data->plt_data_RGB)[1][3]	= (m_pltsw1 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[2][0]	= bmp2FRfont_v3to8(m_r2);
	(data->plt_data_RGB)[2][1]	= bmp2FRfont_v3to8(m_g2);
	(data->plt_data_RGB)[2][2]	= bmp2FRfont_v3to8(m_b2);
	(data->plt_data_RGB)[2][3]	= (m_pltsw2 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[3][0]	= bmp2FRfont_v3to8(m_r3);
	(data->plt_data_RGB)[3][1]	= bmp2FRfont_v3to8(m_g3);
	(data->plt_data_RGB)[3][2]	= bmp2FRfont_v3to8(m_b3);
	(data->plt_data_RGB)[3][3]	= (m_pltsw3 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[4][0]	= bmp2FRfont_v3to8(m_r4);
	(data->plt_data_RGB)[4][1]	= bmp2FRfont_v3to8(m_g4);
	(data->plt_data_RGB)[4][2]	= bmp2FRfont_v3to8(m_b4);
	(data->plt_data_RGB)[4][3]	= (m_pltsw4 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[5][0]	= bmp2FRfont_v3to8(m_r5);
	(data->plt_data_RGB)[5][1]	= bmp2FRfont_v3to8(m_g5);
	(data->plt_data_RGB)[5][2]	= bmp2FRfont_v3to8(m_b5);
	(data->plt_data_RGB)[5][3]	= (m_pltsw5 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[6][0]	= bmp2FRfont_v3to8(m_r6);
	(data->plt_data_RGB)[6][1]	= bmp2FRfont_v3to8(m_g6);
	(data->plt_data_RGB)[6][2]	= bmp2FRfont_v3to8(m_b6);
	(data->plt_data_RGB)[6][3]	= (m_pltsw6 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[7][0]	= bmp2FRfont_v3to8(m_r7);
	(data->plt_data_RGB)[7][1]	= bmp2FRfont_v3to8(m_g7);
	(data->plt_data_RGB)[7][2]	= bmp2FRfont_v3to8(m_b7);
	(data->plt_data_RGB)[7][3]	= (m_pltsw7 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[8][0]	= bmp2FRfont_v3to8(m_r8);
	(data->plt_data_RGB)[8][1]	= bmp2FRfont_v3to8(m_g8);
	(data->plt_data_RGB)[8][2]	= bmp2FRfont_v3to8(m_b8);
	(data->plt_data_RGB)[8][3]	= (m_pltsw8 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[9][0]	= bmp2FRfont_v3to8(m_r9);
	(data->plt_data_RGB)[9][1]	= bmp2FRfont_v3to8(m_g9);
	(data->plt_data_RGB)[9][2]	= bmp2FRfont_v3to8(m_b9);
	(data->plt_data_RGB)[9][3]	= (m_pltsw9 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[10][0]	= bmp2FRfont_v3to8(m_r10);
	(data->plt_data_RGB)[10][1]	= bmp2FRfont_v3to8(m_g10);
	(data->plt_data_RGB)[10][2]	= bmp2FRfont_v3to8(m_b10);
	(data->plt_data_RGB)[10][3]	= (m_pltsw10 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[11][0]	= bmp2FRfont_v3to8(m_r11);
	(data->plt_data_RGB)[11][1]	= bmp2FRfont_v3to8(m_g11);
	(data->plt_data_RGB)[11][2]	= bmp2FRfont_v3to8(m_b11);
	(data->plt_data_RGB)[11][3]	= (m_pltsw11 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[12][0]	= bmp2FRfont_v3to8(m_r12);
	(data->plt_data_RGB)[12][1]	= bmp2FRfont_v3to8(m_g12);
	(data->plt_data_RGB)[12][2]	= bmp2FRfont_v3to8(m_b12);
	(data->plt_data_RGB)[12][3]	= (m_pltsw12 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[13][0]	= bmp2FRfont_v3to8(m_r13);
	(data->plt_data_RGB)[13][1]	= bmp2FRfont_v3to8(m_g13);
	(data->plt_data_RGB)[13][2]	= bmp2FRfont_v3to8(m_b13);
	(data->plt_data_RGB)[13][3]	= (m_pltsw13 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[14][0]	= bmp2FRfont_v3to8(m_r14);
	(data->plt_data_RGB)[14][1]	= bmp2FRfont_v3to8(m_g14);
	(data->plt_data_RGB)[14][2]	= bmp2FRfont_v3to8(m_b14);
	(data->plt_data_RGB)[14][3]	= (m_pltsw14 == FALSE) ? 1 : 0;

	(data->plt_data_RGB)[15][0]	= bmp2FRfont_v3to8(m_r15);
	(data->plt_data_RGB)[15][1]	= bmp2FRfont_v3to8(m_g15);
	(data->plt_data_RGB)[15][2]	= bmp2FRfont_v3to8(m_b15);
	(data->plt_data_RGB)[15][3]	= (m_pltsw15 == FALSE) ? 1 : 0;
}

/////////////////////////////////////////////////////////////////////////////
// CBmp2FRfontDlg メッセージ ハンドラ

BOOL CBmp2FRfontDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
	// ウィンドウがダイアログでない時は自動的に設定しません。
	SetIcon(m_hIcon, TRUE);			// 大きいアイコンを設定
	SetIcon(m_hIcon, FALSE);		// 小さいアイコンを設定
	
	// TODO: 特別な初期化を行う時はこの場所に追加してください。
///////////////////////////////////////////////////////////////////////////
// APPENDED
	bmp2FRfont_initdata(&MainData);
	set_palette_value(bmp2FRfont_GLBL_plt_org_data);

	PathName	= (char *)NULL;

#include "bmp2FR_window_step1.h"

///////////////////////////////////////////////////////////////////////////
	
	return TRUE;  // TRUE を返すとコントロールに設定したフォーカスは失われません。
}

// もしダイアログボックスに最小化ボタンを追加するならば、アイコンを描画する
// コードを以下に記述する必要があります。MFC アプリケーションは document/view
// モデルを使っているので、この処理はフレームワークにより自動的に処理されます。

void CBmp2FRfontDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 描画用のデバイス コンテキスト

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// クライアントの矩形領域内の中央
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// アイコンを描画します。
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// システムは、ユーザーが最小化ウィンドウをドラッグしている間、
// カーソルを表示するためにここを呼び出します。
HCURSOR CBmp2FRfontDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CBmp2FRfontDlg::OnChangeEditInfile() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	int		turnoff_flag;
	FILE	*fp;

	UpdateData(TRUE);		// display -> variable

	turnoff_flag = 0;
	if ((fp = fopen(m_infname, "rb")) != (FILE *)NULL) {

		// load bitmap file
		bmp2FRfont_cleardata(&MainData);
		if (bmp2FRfont_read24bitBMP(m_infname, &MainData) == 0) {
			bmp2FRfont_cleardata(&MainData);
			turnoff_flag = 1;
		}
		else {
			char	*ptr;
			if (PathName != (char *)NULL)
				free(PathName);
			PathName	= (char *)malloc(strlen(m_infname) + 1);
			strcpy(PathName, m_infname);
			for (ptr = PathName + strlen(PathName); ptr != PathName; ptr--) {
				if (*(ptr - 1) == '\\')
					break;
			}
			*ptr	= '\0';
		}

		fclose(fp);
	}
	else
		turnoff_flag = 1;

	if (turnoff_flag != 0) {
		bmp2FRfont_cleardata(&MainData);

#include "bmp2FR_window_step1.h"
	}
	else {
#include "bmp2FR_window_step2.h"
	}

	m_status = _T("");

	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnButtonInfile() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
    char	inpfname[MAX_PATH];
    OPENFILENAME	ofn;

	inpfname[0] = '\0';	// DO NOT REMOVE

	memset(&ofn,0,sizeof(OPENFILENAME));
	ofn.lStructSize		= (DWORD)sizeof(OPENFILENAME);
	ofn.hwndOwner		= NULL ;
	ofn.lpstrFilter		="Bitmap files (*.bmp)\0*.bmp\0All files (*.*)\0*.*\0\0";//フィルタ
	ofn.nFilterIndex	= 0;
	ofn.lpstrFile		= inpfname;	//選択されたファイル名を受け取る(フルパス)
	ofn.nMaxFile		= MAX_PATH;
	ofn.lpstrFileTitle	= NULL;
	ofn.nMaxFileTitle	= 0;
	ofn.lpstrInitialDir = NULL;
	ofn.lpstrTitle		= "Select an input file";	//ダイアログボックスのタイトル
	ofn.lpstrDefExt		= NULL;
	ofn.Flags			= OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;

	if (GetOpenFileName(&ofn)) {
		int turnoff_flag;

		turnoff_flag = 0;
		if (strcmp(inpfname, "")) {
			FILE *fp;
			m_infname  = inpfname;
			if ((fp = fopen(m_infname, "rb")) != (FILE *)NULL) {

				// load bitmap file
				bmp2FRfont_cleardata(&MainData);
				if (bmp2FRfont_read24bitBMP(m_infname, &MainData) == 0) {
					bmp2FRfont_cleardata(&MainData);
					turnoff_flag = 1;
				}
				else {
					char	*ptr;
					if (PathName != (char *)NULL)
						free(PathName);
					PathName	= (char *)malloc(strlen(m_infname) + 1);
					strcpy(PathName, m_infname);
					for (ptr = PathName + strlen(PathName); ptr != PathName; ptr--) {
						if (*(ptr - 1) == '\\')
							break;
					}
					*ptr	= '\0';
				}

				fclose(fp);
			}
			else
				turnoff_flag = 1;
		}
		else
			turnoff_flag = 1;

		if (turnoff_flag != 0) {
			bmp2FRfont_cleardata(&MainData);

#include "bmp2FR_window_step1.h"
		}
		else {
#include "bmp2FR_window_step2.h"
		}

		m_status = _T("");

		UpdateData(FALSE);		// variable -> display
	}
}

void CBmp2FRfontDlg::OnDropFiles(HDROP hDropInfo)
{
	// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
	char inpfname[MAX_PATH];
	int nFileNameLen;
	UINT m, nNumDropFiles;

	nNumDropFiles = DragQueryFile(hDropInfo, 0xFFFFFFFF, (LPSTR)inpfname, MAX_PATH);
//	for (m = 0; m < nNumDropFiles; m++) {
	for (m = 0; m < 1; m++) {
		int turnoff_flag;
		int newbmp_flag;

	// DropFile にドロップされたファイルの絶対パスが入る
		nFileNameLen = DragQueryFile(hDropInfo, m, (LPSTR)inpfname, MAX_PATH);
		// ドロップされたファイルの処理
		// ここに記述する

		turnoff_flag	= 0;
		newbmp_flag		= 0;

		if (strcmp(inpfname, "") && strlen(inpfname) > 4) {
			FILE *fp;
			if ((fp = fopen(inpfname, "rb")) != (FILE *)NULL) {
				// BMP file
				if (!stricmp(".bmp", inpfname + strlen(inpfname) - 4)) {
					// load bitmap file
					bmp2FRfont_cleardata(&MainData);
					if (bmp2FRfont_read24bitBMP(inpfname, &MainData) == 0) {
						bmp2FRfont_cleardata(&MainData);
						turnoff_flag = 1;
					}
					else {
						char	*ptr;
						if (PathName != (char *)NULL)
							free(PathName);
						PathName	= (char *)malloc(strlen(inpfname) + 1);
						strcpy(PathName, inpfname);
						for (ptr = PathName + strlen(PathName); ptr != PathName; ptr--) {
							if (*(ptr - 1) == '\\')
								break;
						}
						*ptr	= '\0';

						newbmp_flag	= 1;
					}
				}
				// PAL file
				else if (MainData.bmp_data != (uint8 *)NULL && !stricmp(".pal", inpfname + strlen(inpfname) - 4)) {
				    char	linebuf[1024];

#include "bmp2FR_window_readpal.h"

				}
				else
					turnoff_flag = 1;

				fclose(fp);
			}
			else
				turnoff_flag = 1;
		}
		else
			turnoff_flag = 1;

		if (turnoff_flag != 0) {
			bmp2FRfont_cleardata(&MainData);

#include "bmp2FR_window_step1.h"
		}
		else {
			if (newbmp_flag == 1)
				m_infname  = inpfname;

#include "bmp2FR_window_step2.h"
		}

		m_status = _T("");
		UpdateData(FALSE);		// variable -> display

	}
	DragFinish(hDropInfo);

	CDialog::OnDropFiles(hDropInfo);
}


void CBmp2FRfontDlg::OnButtonDefplt() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	m_thru = FALSE;
	set_palette_value(bmp2FRfont_GLBL_plt_org_data);

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnButtonSetplt() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	m_thru = FALSE;
	bmp2FRfont_get_histogram(&MainData);
	set_palette_value(MainData.hist);

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnButtonGenstart() 
{
	char	message[1024];
    char	fname[MAX_PATH];
	int		fontx, fonty;

	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	get_palette_value(&MainData);

	{
		int		ignore_flag, fplt;
		uint8	fr, fg, fb;

		ignore_flag	= (m_thru == FALSE) ? 0 : 1;
		fr			= m_forcer;
		fg			= m_forceg;
		fb			= m_forceb;
		fplt		= m_forceplt;

		if (fr < 0)		fr		= 0;
		if (fr > 255)	fr		= 255;
		if (fg < 0)		fg		= 0;
		if (fg > 255)	fg		= 255;
		if (fb < 0)		fb		= 0;
		if (fb > 255)	fb		= 255;
		if (fplt < 0)	fplt	= 0;
		if (fplt > 15)	fplt	= 15;

		bmp2FRfont_reduce_color(&MainData, ignore_flag, fr, fg, fb, fplt);
	}

	{
		int	grid;
		grid	= (m_bmpgrid == FALSE) ? 0 : 1;
		sprintf(fname, "%s%s", PathName, OUT_BMP_FNAME);
		bmp2FRfont_write24bitBMP(fname, &MainData, grid);
	}

	sprintf(fname, "%s%s", PathName, OUT_REGPALETTE_FNAME);
	bmp2FRfont_write_palette_C(fname, &MainData);

		sprintf(fname, "%s%s", PathName, OUT_PEDPALETTE_FNAME);
	bmp2FRfont_write_palette_PAL(fname, &MainData);

#include "bmp2FR_window_step4.h"

	fontx	= MainData.width / 24;
	if ((MainData.width % 24) != 0)
		fontx++;
	fonty	= MainData.height / 32;
	if ((MainData.height % 32) != 0)
		fonty++;

	sprintf(message, "Conversion complete.  BMP size = %d x %d.  Number of font = %d x %d = %d. (Height x Width)",
			MainData.height, MainData.width, fonty, fontx, fontx * fonty);
	m_status = message;

	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckBmpgrid() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnButtonGenhex() 
{
	int		chrnum_start, box_flag, from_x, from_y, to_x, to_y;
    char	fname[MAX_PATH];

	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	if (m_fontstart == TRUE)
		chrnum_start	= m_fontnum;
	else
		chrnum_start	= 0;
	if (chrnum_start < 0)
		chrnum_start	= 0;
	if (chrnum_start > 447)
		chrnum_start	= 447;

	box_flag	= (m_fontrange == TRUE) ? 1 : 0;
	from_x		= m_fromx;
	from_y		= m_fromy;
	to_x		= m_tox;
	to_y		= m_toy;

	sprintf(fname, "%s%s", PathName, OUT_HEX_FNAME);
	bmp2FRfont_write_flash_hex(fname, chrnum_start, box_flag, from_x, from_y, to_x, to_y, &MainData);

//	m_status = _T("HEX file was generated.");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckFontstart() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	if (m_fontstart == TRUE)
		GetDlgItem(IDC_EDIT_FONTNUM)->EnableWindow(TRUE);
	else
		GetDlgItem(IDC_EDIT_FONTNUM)->EnableWindow(FALSE);

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditFontnum() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckFontrange() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	if (m_fontrange == TRUE) {
		GetDlgItem(IDC_EDIT_FROMY)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_FROMX)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_TOY)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_TOX)->EnableWindow(TRUE);
	}
	else {
		GetDlgItem(IDC_EDIT_FROMY)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_FROMX)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_TOY)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_TOX)->EnableWindow(FALSE);
	}

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditFromy() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditFromx() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditToy() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditTox() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

//	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw0() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw1() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw2() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw3() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw4() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw5() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw6() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw7() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw8() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw9() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw10() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw11() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw12() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw13() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw14() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckPltsw15() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR0() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r0 < 0)
		m_r0	= 0;
	if (m_r0 > 9)
		m_r0	/= 10;
	if (m_r0 > 7)
		m_r0	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG0() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g0 < 0)
		m_g0	= 0;
	if (m_g0 > 9)
		m_g0	/= 10;
	if (m_g0 > 7)
		m_g0	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB0() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b0 < 0)
		m_b0	= 0;
	if (m_b0 > 9)
		m_b0	/= 10;
	if (m_b0 > 7)
		m_b0	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR1() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r1 < 0)
		m_r1	= 0;
	if (m_r1 > 9)
		m_r1	/= 10;
	if (m_r1 > 7)
		m_r1	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG1() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g1 < 0)
		m_g1	= 0;
	if (m_g1 > 9)
		m_g1	/= 10;
	if (m_g1 > 7)
		m_g1	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB1() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b1 < 0)
		m_b1	= 0;
	if (m_b1 > 9)
		m_b1	/= 10;
	if (m_b1 > 7)
		m_b1	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR2() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r2 < 0)
		m_r2	= 0;
	if (m_r2 > 9)
		m_r2	/= 10;
	if (m_r2 > 7)
		m_r2	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG2() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g2 < 0)
		m_g2	= 0;
	if (m_g2 > 9)
		m_g2	/= 10;
	if (m_g2 > 7)
		m_g2	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB2() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b2 < 0)
		m_b2	= 0;
	if (m_b2 > 9)
		m_b2	/= 10;
	if (m_b2 > 7)
		m_b2	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR3() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r3 < 0)
		m_r3	= 0;
	if (m_r3 > 9)
		m_r3	/= 10;
	if (m_r3 > 7)
		m_r3	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG3() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g3 < 0)
		m_g3	= 0;
	if (m_g3 > 9)
		m_g3	/= 10;
	if (m_g3 > 7)
		m_g3	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB3() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b3 < 0)
		m_b3	= 0;
	if (m_b3 > 9)
		m_b3	/= 10;
	if (m_b3 > 7)
		m_b3	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR4() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r4 < 0)
		m_r4	= 0;
	if (m_r4 > 9)
		m_r4	/= 10;
	if (m_r4 > 7)
		m_r4	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG4() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g4 < 0)
		m_g4	= 0;
	if (m_g4 > 9)
		m_g4	/= 10;
	if (m_g4 > 7)
		m_g4	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB4() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b4 < 0)
		m_b4	= 0;
	if (m_b4 > 9)
		m_b4	/= 10;
	if (m_b4 > 7)
		m_b4	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR5() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r5 < 0)
		m_r5	= 0;
	if (m_r5 > 9)
		m_r5	/= 10;
	if (m_r5 > 7)
		m_r5	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG5() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g5 < 0)
		m_g5	= 0;
	if (m_g5 > 9)
		m_g5	/= 10;
	if (m_g5 > 7)
		m_g5	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB5() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b5 < 0)
		m_b5	= 0;
	if (m_b5 > 9)
		m_b5	/= 10;
	if (m_b5 > 7)
		m_b5	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR6() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r6 < 0)
		m_r6	= 0;
	if (m_r6 > 9)
		m_r6	/= 10;
	if (m_r6 > 7)
		m_r6	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG6() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g6 < 0)
		m_g6	= 0;
	if (m_g6 > 9)
		m_g6	/= 10;
	if (m_g6 > 7)
		m_g6	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB6() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b6 < 0)
		m_b6	= 0;
	if (m_b6 > 9)
		m_b6	/= 10;
	if (m_b6 > 7)
		m_b6	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR7() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r7 < 0)
		m_r7	= 0;
	if (m_r7 > 9)
		m_r7	/= 10;
	if (m_r7 > 7)
		m_r7	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG7() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g7 < 0)
		m_g7	= 0;
	if (m_g7 > 9)
		m_g7	/= 10;
	if (m_g7 > 7)
		m_g7	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB7() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b7 < 0)
		m_b7	= 0;
	if (m_b7 > 9)
		m_b7	/= 10;
	if (m_b7 > 7)
		m_b7	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR8() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r8 < 0)
		m_r8	= 0;
	if (m_r8 > 9)
		m_r8	/= 10;
	if (m_r8 > 7)
		m_r8	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG8() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g8 < 0)
		m_g8	= 0;
	if (m_g8 > 9)
		m_g8	/= 10;
	if (m_g8 > 7)
		m_g8	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB8() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b8 < 0)
		m_b8	= 0;
	if (m_b8 > 9)
		m_b8	/= 10;
	if (m_b8 > 7)
		m_b8	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR9() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r9 < 0)
		m_r9	= 0;
	if (m_r9 > 9)
		m_r9	/= 10;
	if (m_r9 > 7)
		m_r9	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG9() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g9 < 0)
		m_g9	= 0;
	if (m_g9 > 9)
		m_g9	/= 10;
	if (m_g9 > 7)
		m_g9	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB9() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b9 < 0)
		m_b9	= 0;
	if (m_b9 > 9)
		m_b9	/= 10;
	if (m_b9 > 7)
		m_b9	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR10() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r10 < 0)
		m_r10	= 0;
	if (m_r10 > 9)
		m_r10	/= 10;
	if (m_r10 > 7)
		m_r10	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG10() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g10 < 0)
		m_g10	= 0;
	if (m_g10 > 9)
		m_g10	/= 10;
	if (m_g10 > 7)
		m_g10	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB10() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b10 < 0)
		m_b10	= 0;
	if (m_b10 > 9)
		m_b10	/= 10;
	if (m_b10 > 7)
		m_b10	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR11() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r11 < 0)
		m_r11	= 0;
	if (m_r11 > 9)
		m_r11	/= 10;
	if (m_r11 > 7)
		m_r11	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG11() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g11 < 0)
		m_g11	= 0;
	if (m_g11 > 9)
		m_g11	/= 10;
	if (m_g11 > 7)
		m_g11	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB11() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b11 < 0)
		m_b11	= 0;
	if (m_b11 > 9)
		m_b11	/= 10;
	if (m_b11 > 7)
		m_b11	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR12() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r12 < 0)
		m_r12	= 0;
	if (m_r12 > 9)
		m_r12	/= 10;
	if (m_r12 > 7)
		m_r12	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG12() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g12 < 0)
		m_g12	= 0;
	if (m_g12 > 9)
		m_g12	/= 10;
	if (m_g12 > 7)
		m_g12	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB12() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b12 < 0)
		m_b12	= 0;
	if (m_b12 > 9)
		m_b12	/= 10;
	if (m_b12 > 7)
		m_b12	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR13() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r13 < 0)
		m_r13	= 0;
	if (m_r13 > 9)
		m_r13	/= 10;
	if (m_r13 > 7)
		m_r13	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG13() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g13 < 0)
		m_g13	= 0;
	if (m_g13 > 9)
		m_g13	/= 10;
	if (m_g13 > 7)
		m_g13	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB13() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b13 < 0)
		m_b13	= 0;
	if (m_b13 > 9)
		m_b13	/= 10;
	if (m_b13 > 7)
		m_b13	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR14() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r14 < 0)
		m_r14	= 0;
	if (m_r14 > 9)
		m_r14	/= 10;
	if (m_r14 > 7)
		m_r14	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG14() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g14 < 0)
		m_g14	= 0;
	if (m_g14 > 9)
		m_g14	/= 10;
	if (m_g14 > 7)
		m_g14	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB14() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b14 < 0)
		m_b14	= 0;
	if (m_b14 > 9)
		m_b14	/= 10;
	if (m_b14 > 7)
		m_b14	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditR15() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_r15 < 0)
		m_r15	= 0;
	if (m_r15 > 9)
		m_r15	/= 10;
	if (m_r15 > 7)
		m_r15	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditG15() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_g15 < 0)
		m_g15	= 0;
	if (m_g15 > 9)
		m_g15	/= 10;
	if (m_g15 > 7)
		m_g15	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditB15() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable
	if (m_b15 < 0)
		m_b15	= 0;
	if (m_b15 > 9)
		m_b15	/= 10;
	if (m_b15 > 7)
		m_b15	= 7;
	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditForcer() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("Please push color conversion button again.");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditForceg() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("Please push color conversion button again.");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditForceb() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("Please push color conversion button again.");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnChangeEditForceplt() 
{
	// TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
	// 内での論理和の ENM_CHANGE フラグ付きで CRichEditCrtl().SetEventMask()
	// メッセージをコントロールへ送るために CDialog::OnInitDialog() 関数をオーバー
	// ライドしない限りこの通知を送りません。
	
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	m_status = _T("Please push color conversion button again.");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnCheckThru() 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	if (m_thru == TRUE) {
		GetDlgItem(IDC_EDIT_FORCER)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_FORCEG)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_FORCEB)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_FORCEPLT)->EnableWindow(TRUE);
	}
	else {
		GetDlgItem(IDC_EDIT_FORCER)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_FORCEG)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_FORCEB)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_FORCEPLT)->EnableWindow(FALSE);
	}

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}

void CBmp2FRfontDlg::OnButtonReadpal() 
{
    char	inpfname[MAX_PATH];
    char	linebuf[1024];
    OPENFILENAME	ofn;

	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
	UpdateData(TRUE);		// display -> variable

	inpfname[0] = '\0';	// DO NOT REMOVE

	memset(&ofn,0,sizeof(OPENFILENAME));
	ofn.lStructSize		= (DWORD)sizeof(OPENFILENAME);
	ofn.hwndOwner		= NULL ;
	ofn.lpstrFilter		="Pal files (*.pal)\0*.pal\0All files (*.*)\0*.*\0\0";//フィルタ
	ofn.nFilterIndex	= 0;
	ofn.lpstrFile		= inpfname;	//選択されたファイル名を受け取る(フルパス)
	ofn.nMaxFile		= MAX_PATH;
	ofn.lpstrFileTitle	= NULL;
	ofn.nMaxFileTitle	= 0;
	ofn.lpstrInitialDir = NULL;
	ofn.lpstrTitle		= "Select an input file";	//ダイアログボックスのタイトル
	ofn.lpstrDefExt		= NULL;
	ofn.Flags			= OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;

	if (GetOpenFileName(&ofn)) {
		if (strcmp(inpfname, "")) {
			FILE *fp;
			if ((fp = fopen(inpfname, "rb")) != (FILE *)NULL) {

#include "bmp2FR_window_readpal.h"

				fclose(fp);
			}
		}
	}

	m_status = _T("");
	UpdateData(FALSE);		// variable -> display
}
