findriskpage.cpp

来自「管理项目进度工具的原代码」· C++ 代码 · 共 161 行

CPP
161
字号
// FindRiskPage.cpp : implementation file
//

#include "stdafx.h"
#include "todolist.h"
#include "FindRiskPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFindRiskPage property page

enum { THISRISK, MORETHAN, LESSTHAN, BETWEEN };

IMPLEMENT_DYNCREATE(CFindRiskPage, CPropertyPage)

CFindRiskPage::CFindRiskPage() : CPropertyPage(CFindRiskPage::IDD)
{
	//{{AFX_DATA_INIT(CFindRiskPage)
	m_nRiskOption = MORETHAN;
	m_nMoreThanRisk = 0;
	m_nLessThanRisk = 0;
	m_nStartRisk = 0;
	m_nEndRisk = 0;
	m_nThisRisk = 0;
	//}}AFX_DATA_INIT

}

CFindRiskPage::~CFindRiskPage()
{
}

void CFindRiskPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFindRiskPage)
	DDX_Radio(pDX, IDC_THIS, m_nRiskOption);
	DDX_CBRisk(pDX, IDC_MORETHANRISK, m_nMoreThanRisk);
	DDX_CBRisk(pDX, IDC_LESSTHANRISK, m_nLessThanRisk);
	DDX_CBRisk(pDX, IDC_RISKSTART, m_nStartRisk);
	DDX_CBRisk(pDX, IDC_RISKEND, m_nEndRisk);
	DDX_CBRisk(pDX, IDC_THISRISK, m_nThisRisk);
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_MORETHANRISK, m_cbMoreThanRisk);
	DDX_Control(pDX, IDC_LESSTHANRISK, m_cbLessThanRisk);
	DDX_Control(pDX, IDC_RISKSTART, m_cbStartRisk);
	DDX_Control(pDX, IDC_RISKEND, m_cbEndRisk);
	DDX_Control(pDX, IDC_THISRISK, m_cbThisRisk);
}


BEGIN_MESSAGE_MAP(CFindRiskPage, CPropertyPage)
	//{{AFX_MSG_MAP(CFindRiskPage)
	ON_BN_CLICKED(IDC_MORETHAN, OnChangeOption)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_LESSTHAN, OnChangeOption)
	ON_BN_CLICKED(IDC_BETWEEN, OnChangeOption)
	ON_BN_CLICKED(IDC_THIS, OnChangeOption)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFindRiskPage message handlers

BOOL CFindRiskPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	CString sRegKey = GetRegKey();
	
	m_nRiskOption = AfxGetApp()->GetProfileInt(sRegKey, "LastNumOption", m_nRiskOption);
	m_nThisRisk = AfxGetApp()->GetProfileInt(sRegKey, "LastThisRisk", m_nThisRisk);
	m_nMoreThanRisk = AfxGetApp()->GetProfileInt(sRegKey, "LastMoreThanRisk", m_nMoreThanRisk);
	m_nLessThanRisk = AfxGetApp()->GetProfileInt(sRegKey, "LastLessThanRisk", m_nLessThanRisk);
	m_nStartRisk = AfxGetApp()->GetProfileInt(sRegKey, "LastStartRisk", m_nStartRisk);
	m_nEndRisk = AfxGetApp()->GetProfileInt(sRegKey, "LastEndRisk", m_nEndRisk);

	UpdateData(FALSE);
	
	EnableControls(m_nRiskOption);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFindRiskPage::GetRange(int& nFrom, int& nTo)
{
	if (GetSafeHwnd())
		UpdateData();
	
	switch (m_nRiskOption)
	{
	case THISRISK:
		nFrom = m_nThisRisk;
		nTo = nFrom;
		break;
		
	case MORETHAN:
		nFrom = m_nMoreThanRisk + 1;
		nTo = INT_MAX;
		break;
		
	case LESSTHAN:
		nFrom = INT_MIN;
		nTo = m_nLessThanRisk - 1;
		break;
		
	case BETWEEN:
		nFrom = m_nStartRisk;
		nTo = m_nEndRisk;
		break;
	}
}

void CFindRiskPage::OnChangeOption() 
{
	UpdateData();
	EnableControls(m_nRiskOption);
}

void CFindRiskPage::EnableControls(int nOption)
{
	GetDlgItem(IDC_THISRISK)->EnableWindow(nOption == THISRISK);
	GetDlgItem(IDC_MORETHANRISK)->EnableWindow(nOption == MORETHAN);
	GetDlgItem(IDC_LESSTHANRISK)->EnableWindow(nOption == LESSTHAN);
	GetDlgItem(IDC_RISKSTART)->EnableWindow(nOption == BETWEEN);
	GetDlgItem(IDC_RISKEND)->EnableWindow(nOption == BETWEEN);
}

CString CFindRiskPage::GetRegKey() const
{
	CString sKey, sTitle;
	GetWindowText(sTitle);

	if (sTitle.IsEmpty())
		sTitle = m_psp.pszTitle;

	sKey.Format("FindTasks\\%s", sTitle);

	return sKey;
}

void CFindRiskPage::OnDestroy() 
{
	CPropertyPage::OnDestroy();

	CString sRegKey = GetRegKey();
	
	AfxGetApp()->WriteProfileInt(sRegKey, "LastNumOption", m_nRiskOption);
	AfxGetApp()->WriteProfileInt(sRegKey, "LastThisRisk", m_nThisRisk);
	AfxGetApp()->WriteProfileInt(sRegKey, "LastMoreThanRisk", m_nMoreThanRisk);
	AfxGetApp()->WriteProfileInt(sRegKey, "LastLessThanRisk", m_nLessThanRisk);
	AfxGetApp()->WriteProfileInt(sRegKey, "LastStartRisk", m_nStartRisk);
	AfxGetApp()->WriteProfileInt(sRegKey, "LastEndRisk", m_nEndRisk);
}

⌨️ 快捷键说明

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