📄 examdlg.cpp
字号:
// ExamDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ExmOnline.h"
#include "ExamDlg.h"
#include "ExmOnlineDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CExamDlg dialog
CExamDlg::CExamDlg(CWnd* pParent /*=NULL*/)
: CDialog(CExamDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CExamDlg)
m_iSSelect = -1;
m_strAnsA = _T("");
m_strAnsC = _T("");
m_strAnsB = _T("");
m_strAnsD = _T("");
m_strQstion = _T("");
m_strBlkAns = _T("");
m_iJudgement = -1;
//}}AFX_DATA_INIT
}
void CExamDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExamDlg)
DDX_Radio(pDX, IDC_RADIO_ANSA, m_iSSelect);
DDX_Text(pDX, IDC_RICHEDIT_ANSA, m_strAnsA);
DDX_Text(pDX, IDC_RICHEDIT_ANSC, m_strAnsC);
DDX_Text(pDX, IDC_RICHEDIT_ANSB, m_strAnsB);
DDX_Text(pDX, IDC_RICHEDIT_ANSD, m_strAnsD);
DDX_Text(pDX, IDC_RICHEDIT_QSTION, m_strQstion);
DDX_Text(pDX, IDC_EDIT_BLKANS, m_strBlkAns);
DDX_Radio(pDX, IDC_RADIO_TRUE, m_iJudgement);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExamDlg, CDialog)
//{{AFX_MSG_MAP(CExamDlg)
ON_BN_CLICKED(IDC_BUTTON_SEL, OnButtonSel)
ON_BN_CLICKED(IDC_BUTTON_BLK, OnButtonBlk)
ON_BN_CLICKED(IDC_BUTTON_PRE, OnButtonPre)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_JUDGE, OnButtonJudge)
ON_BN_CLICKED(IDC_BUTTON_SUBMIT, OnButtonSubmit)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExamDlg message handlers
BOOL CExamDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//初始化时间
int temptime=CExmOnlineDlg::m_ptrData->ReadTime();
CExmOnlineDlg::m_ptrData->InitTime(temptime);
m_strTime.Format("剩余时间:%d:%d:%d",
CExmOnlineDlg::m_ptrData->GetHour(),
CExmOnlineDlg::m_ptrData->GetMinute(),
CExmOnlineDlg::m_ptrData->GetSecond());
GetDlgItem(IDC_STATIC_NOTICE)->SetWindowText(m_strTime);
SetTimer(0,995,NULL);
//显示选择题答题区域
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_SHOW);
//隐藏其他题型答题区域
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
//获取各题型的题量
//int temp= //测试用
m_iNumSel=CExmOnlineDlg::m_ptrData->GetSelNum(CExmOnlineDlg::m_ptrData->SGetsubjct());
m_iNumBlk=CExmOnlineDlg::m_ptrData->GetBlkNum(CExmOnlineDlg::m_ptrData->SGetsubjct());
m_iNumJdg=CExmOnlineDlg::m_ptrData->GetJdgNum(CExmOnlineDlg::m_ptrData->SGetsubjct());
//初始化记录选择题选项的数组
CExmOnlineDlg::m_ptrData->InitSSelectionArr();
CExmOnlineDlg::m_ptrData->InitSJudgementArr();
//初始化所有题型的完成状态为未完成
CExmOnlineDlg::m_ptrData->InitCmpltedArr();
//初始化对话框时默认显示选择题
CExmOnlineDlg::m_ptrData->SetQstionTypeSel();
//初始化抽题ID数组
CExmOnlineDlg::m_ptrData->InitSelArr();
CExmOnlineDlg::m_ptrData->InitBlkArr();
CExmOnlineDlg::m_ptrData->InitJdgArr();
//生成抽题随机数
CExmOnlineDlg::m_ptrData->GeneratRandom(CExmOnlineDlg::m_ptrData->GetSelIDArr(),
CExmOnlineDlg::m_ptrData->GetSelNum(CExmOnlineDlg::m_ptrData->SGetsubjct()));
CExmOnlineDlg::m_ptrData->GeneratRandomBlk(CExmOnlineDlg::m_ptrData->GetBlkIDArr(),
CExmOnlineDlg::m_ptrData->GetBlkNum(CExmOnlineDlg::m_ptrData->SGetsubjct()));
CExmOnlineDlg::m_ptrData->GeneratRandomJdg(CExmOnlineDlg::m_ptrData->GetJdgIDArr(),
CExmOnlineDlg::m_ptrData->GetJdgNum(CExmOnlineDlg::m_ptrData->SGetsubjct()));
//初始化各种题型的当前序号为0
CExmOnlineDlg::m_ptrData->InitSqnceNum();
//设置当前考试科目所用的选择、填空和判断题题库名(未完成判断部分)
CExmOnlineDlg::m_ptrData->GetSelBase(CExmOnlineDlg::m_ptrData->SGetsubjct());
CExmOnlineDlg::m_ptrData->GetBlkBase(CExmOnlineDlg::m_ptrData->SGetsubjct());
CExmOnlineDlg::m_ptrData->GetJdgBase(CExmOnlineDlg::m_ptrData->SGetsubjct());
//显示题目
m_strNotify.Format("选择题:共%d题,当前为第%d题",m_iNumSel,
CExmOnlineDlg::m_ptrData->GetSelSeqnce()+1);
GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
CExmOnlineDlg::m_ptrData->GetSelQstion(CExmOnlineDlg::m_ptrData->GetSelID()));
//从数据库中获取并设置选项
CExmOnlineDlg::m_ptrData->SetSelAns();
//显示四个选项
GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsA());
GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsB());
GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsC());
GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsD());
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
if(CExmOnlineDlg::m_ptrData->GetSelSeqnce()==CExmOnlineDlg::m_ptrData->GetSelNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CExamDlg::OnButtonSel()
{
// TODO: Add your control notification handler code here
//显示选择题答题区域
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_SHOW);
//隐藏其他题型答题区域
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
if(CExmOnlineDlg::m_ptrData->GetQstionType()==1)
{
UpdateData();
CExmOnlineDlg::m_ptrData->SetSBlkAns(m_strBlkAns);
CExmOnlineDlg::m_ptrData->WriteBlkResult();
}
else if(CExmOnlineDlg::m_ptrData->GetQstionType()==2)
{
UpdateData();
CExmOnlineDlg::m_ptrData->SetSJdgAns(m_iJudgement);
CExmOnlineDlg::m_ptrData->SetSJudgement(m_iJudgement);
CExmOnlineDlg::m_ptrData->WriteJdgResult();
}
CExmOnlineDlg::m_ptrData->SetQstionTypeSel();
m_strNotify.Format("选择题:共%d题,当前为第%d题",m_iNumSel,
CExmOnlineDlg::m_ptrData->GetSelSeqnce()+1);
GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
if (CExmOnlineDlg::m_ptrData->GetSelSeqnce()==0)
{
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
}
else if(CExmOnlineDlg::m_ptrData->GetSelSeqnce()==CExmOnlineDlg::m_ptrData->GetSelNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
{
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
}
else if(CExmOnlineDlg::m_ptrData->GetSelSeqnce()>0 &&
CExmOnlineDlg::m_ptrData->GetSelSeqnce()<CExmOnlineDlg::m_ptrData->GetSelNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
{
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
}
if(CExmOnlineDlg::m_ptrData->GetSelSeqnce()==CExmOnlineDlg::m_ptrData->GetSelNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1 || CExmOnlineDlg::m_ptrData->GetSelNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())==0)
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
CExmOnlineDlg::m_ptrData->GetSelQstion(CExmOnlineDlg::m_ptrData->GetSelID()));
//从数据库中获取并设置选项
CExmOnlineDlg::m_ptrData->SetSelAns();
//显示四个选项
GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsA());
GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsB());
GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsC());
GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsD());
}
void CExamDlg::OnButtonBlk()
{
// TODO: Add your control notification handler code here
//显示填空题答题区域
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_SHOW);
//隐藏其他题型答题区域
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
if(CExmOnlineDlg::m_ptrData->GetQstionType()==0)
{
UpdateData();
CExmOnlineDlg::m_ptrData->SetSAns(m_iSSelect);
CExmOnlineDlg::m_ptrData->SetSSelection(m_iSSelect);
CExmOnlineDlg::m_ptrData->WriteSelResult();
}
else if(CExmOnlineDlg::m_ptrData->GetQstionType()==2)
{
UpdateData();
CExmOnlineDlg::m_ptrData->SetSJdgAns(m_iJudgement);
CExmOnlineDlg::m_ptrData->SetSJudgement(m_iJudgement);
CExmOnlineDlg::m_ptrData->WriteJdgResult();
}
CExmOnlineDlg::m_ptrData->SetQstionTypeBlk();
m_strNotify.Format("填空题:共%d题,当前为第%d题",m_iNumBlk,
CExmOnlineDlg::m_ptrData->GetBlkSeqnce()+1);
GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
if (CExmOnlineDlg::m_ptrData->GetBlkSeqnce()==0)
{
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
}
else if(CExmOnlineDlg::m_ptrData->GetBlkSeqnce()==CExmOnlineDlg::m_ptrData->GetBlkNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
{
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
}
if(CExmOnlineDlg::m_ptrData->GetBlkSeqnce()==CExmOnlineDlg::m_ptrData->GetBlkNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())-1 || CExmOnlineDlg::m_ptrData->GetBlkNum(
CExmOnlineDlg::m_ptrData->SGetsubjct())==0)
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
CExmOnlineDlg::m_ptrData->GetBlkQstion(CExmOnlineDlg::m_ptrData->GetBlkID()));
CExmOnlineDlg::m_ptrData->SetBlkAns();
}
void CExamDlg::OnButtonPre()
{
// TODO: Add your control notification handler code here
if(CExmOnlineDlg::m_ptrData->GetQstionType()==0)
{
//保存当前题有关信息
UpdateData();
CExmOnlineDlg::m_ptrData->SetSAns(m_iSSelect);
CExmOnlineDlg::m_ptrData->SetSSelection(m_iSSelect);
CExmOnlineDlg::m_ptrData->WriteSelResult();
//显示上一题
CExmOnlineDlg::m_ptrData->DecreaseSel();
m_strNotify.Format("选择题:共%d题,当前为第%d题",m_iNumSel,
CExmOnlineDlg::m_ptrData->GetSelSeqnce()+1);
GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
m_iSSelect=CExmOnlineDlg::m_ptrData->GetSSelection();
UpdateData(FALSE);
int current=CExmOnlineDlg::m_ptrData->GetSelSeqnce();
if(current==0)
{
GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -