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

#include "stdafx.h"
#include "dm2gded.h"
#include "EditVFlagsPg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditVFlagsPg ダイアログ


void CEditVFlagsPg::Construction()
{
	//{{AFX_DATA_INIT(CEditVFlagsPg)
		// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
	//}}AFX_DATA_INIT
}


void CEditVFlagsPg::DoDataExchange(CDataExchange* pDX)
{
	CEditVPg::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditVFlagsPg)
	DDX_Control(pDX, IDC_LIST_FLAGS, m_wndList);
	//}}AFX_DATA_MAP

	if (pDX->m_bSaveAndValidate) {
		m_nFlags = 0;
		for (int i = 0; i < 16; i++) {
			if (m_wndList.GetSel(i) > 0)
				m_nFlags |= (1 << i);
		}
	} else {
		for (int i = 0; i < 16; i++)
			m_wndList.SetSel(i, m_nFlags & (1 << i));
	}
}


BEGIN_MESSAGE_MAP(CEditVFlagsPg, CEditVPg)
	//{{AFX_MSG_MAP(CEditVFlagsPg)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

int CEditVFlagsPg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CEditVPg::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	return 0;
}

BOOL CEditVFlagsPg::OnInitDialog() 
{
	CEditVPg::OnInitDialog();
	
	CString strText;
	for (int i = 0; i < 16; i++) {
		LPCTSTR pszText = m_wvcf.GetHintText(i);
		if (!pszText || !*pszText) pszText = NULL;
		strText.Format(pszText ? "$%04X - %s" : "$%04X", (UINT)(1 << i), pszText);
		m_wndList.AddString(strText);
	}

	m_nFlags = m_nInitVal;

	UpdateData(FALSE);
	
	return TRUE;  // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
	              // 例外: OCX プロパティ ページの戻り値は FALSE となります
}
