📄 qstionmodifydlg.cpp
字号:
// QstionModifyDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ExmOnline.h"
#include "QstionModifyDlg.h"
#include "ExmOnlineDlg.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQstionModifyDlg dialog
CQstionModifyDlg::CQstionModifyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CQstionModifyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CQstionModifyDlg)
m_iFlag=0;
m_iSelAns = -1;
m_iJdgAns = -1;
m_strBlkAns = _T("");
m_strSelectionA = _T("");
m_strSelectionB = _T("");
m_strSelectionC = _T("");
m_strSelectionD = _T("");
m_strQstion = _T("");
//}}AFX_DATA_INIT
}
void CQstionModifyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQstionModifyDlg)
DDX_Control(pDX, IDC_COMBO_QSTIONTYPE, m_ctrQstionType);
DDX_Control(pDX, IDC_LIST_QSTIONS, m_ctrQstionList);
DDX_Control(pDX, IDC_COMBO_SUBJCT, m_ctrSubjct);
DDX_Radio(pDX, IDC_RADIO_ANSA, m_iSelAns);
DDX_Radio(pDX, IDC_RADIO_FALSE, m_iJdgAns);
DDX_Text(pDX, IDC_EDIT_BLKANS, m_strBlkAns);
DDX_Text(pDX, IDC_RICHEDIT_ANSA, m_strSelectionA);
DDX_Text(pDX, IDC_RICHEDIT_ANSB, m_strSelectionB);
DDX_Text(pDX, IDC_RICHEDIT_ANSC, m_strSelectionC);
DDX_Text(pDX, IDC_RICHEDIT_ANSD, m_strSelectionD);
DDX_Text(pDX, IDC_RICHEDIT_QSTION, m_strQstion);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQstionModifyDlg, CDialog)
//{{AFX_MSG_MAP(CQstionModifyDlg)
ON_CBN_SELCHANGE(IDC_COMBO_SUBJCT, OnSelchangeComboSubjct)
ON_CBN_SELCHANGE(IDC_COMBO_QSTIONTYPE, OnSelchangeComboQstiontype)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_QSTIONS, OnItemchangedListQstions)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQstionModifyDlg message handlers
BOOL CQstionModifyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CExmOnlineDlg::m_ptrData->SetSelSubjct(&m_ctrSubjct);
m_ctrQstionList.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
m_ctrQstionList.InsertColumn(0,"题目ID",LVCFMT_CENTER,70,0);
m_ctrQstionList.InsertColumn(1,"题目",LVCFMT_LEFT,500,1);
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(FALSE);
HideAll();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CQstionModifyDlg::OnSelchangeComboSubjct()
{
// TODO: Add your control notification handler code here
if(m_ctrSubjct.GetCurSel()!=-1)
{
m_iFlag|=1; //已经选择了科目
m_ctrSubjct.GetLBText(m_ctrSubjct.GetCurSel(),m_strSubjct);
CExmOnlineDlg::m_ptrData->SSetSubjct(m_strSubjct);
}
if(m_iFlag==3)
{
m_ctrQstionList.DeleteAllItems();
ShowQstions();
}
}
void CQstionModifyDlg::ShowQstions()
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
CString base;
base.Format("%s库名称",m_strQstionType);
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubjct);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString basename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect((_bstr_t)base);
sql.Format("select * from %s",basename);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
int i=0;
while(!Adoconn.m_pRecordset->adoEOF)
{
m_ctrQstionList.InsertItem(i,"");
m_ctrQstionList.SetItemText(i,0,(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("试题ID"));
m_ctrQstionList.SetItemText(i,1,(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("题目"));
Adoconn.m_pRecordset->MoveNext();
i++;
}
Adoconn.ExitConnect();
}
void CQstionModifyDlg::OnSelchangeComboQstiontype()
{
// TODO: Add your control notification handler code here
if(m_ctrQstionType.GetCurSel()!=-1)
{
m_iFlag|=2; //已经选择了题型
m_ctrQstionType.GetLBText(m_ctrQstionType.GetCurSel(),m_strQstionType);
if(m_ctrQstionType.GetCurSel()==2)
ShowSel();
else if(m_ctrQstionType.GetCurSel()==1)
ShowBlk();
else if(m_ctrQstionType.GetCurSel()==0)
ShowJdg();
}
if(m_iFlag==3)
{
m_ctrQstionList.DeleteAllItems();
ShowQstions();
}
}
void CQstionModifyDlg::HideAll()
{
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
}
void CQstionModifyDlg::ShowSel()
{
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_SHOW);
}
void CQstionModifyDlg::ShowBlk()
{
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_SHOW);
}
void CQstionModifyDlg::ShowJdg()
{
GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_SHOW);
}
void CQstionModifyDlg::OnItemchangedListQstions(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
int iQstionID=atoi(m_ctrQstionList.GetItemText((int)m_ctrQstionList.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED),0));
if(!m_ctrQstionList.GetFirstSelectedItemPosition())
{
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(FALSE);
ClearEditCtrls();
}
else
{
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(TRUE);
if(m_strQstionType=="选择题")
{
CExmOnlineDlg::m_ptrData->GetSelBase(m_strSubjct);
m_strQstion=CExmOnlineDlg::m_ptrData->GetSelQstion(iQstionID);
CExmOnlineDlg::m_ptrData->TReadSelAns(iQstionID);
m_strSelectionA=CExmOnlineDlg::m_ptrData->GetAnsA();
m_strSelectionB=CExmOnlineDlg::m_ptrData->GetAnsB();
m_strSelectionC=CExmOnlineDlg::m_ptrData->GetAnsC();
m_strSelectionD=CExmOnlineDlg::m_ptrData->GetAnsD();
UpdateData(FALSE);
}
else if(m_strQstionType=="填空题")
{
CExmOnlineDlg::m_ptrData->GetBlkBase(m_strSubjct);
m_strQstion=CExmOnlineDlg::m_ptrData->GetBlkQstion(iQstionID);
m_strBlkAns=CExmOnlineDlg::m_ptrData->TReadBlkAns(iQstionID);
UpdateData(FALSE);
}
else if(m_strQstionType=="判断题")
{
CExmOnlineDlg::m_ptrData->GetJdgBase(m_strSubjct);
m_strQstion=CExmOnlineDlg::m_ptrData->GetJdgQstion(iQstionID);
m_iJdgAns=CExmOnlineDlg::m_ptrData->TReadJdgAns(iQstionID);
UpdateData(FALSE);
}
}
*pResult = 0;
}
void CQstionModifyDlg::ClearEditCtrls()
{
GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText("");
GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText("");
GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText("");
GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText("");
GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText("");
GetDlgItem(IDC_EDIT_BLKANS)->SetWindowText("");
}
void CQstionModifyDlg::OnButtonDelete()
{
// TODO: Add your control notification handler code here
int iQstionID=atoi(m_ctrQstionList.GetItemText((int)m_ctrQstionList.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED),0));
CString basename;
basename.Format("%s库名称",m_strQstionType);
CString base;
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubjct);
ADOConn Adoconn;
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
base=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect((_bstr_t)basename);
sql.Format("delete from %s where 试题ID=%d",base,iQstionID);
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.ExitConnect();
CExmOnlineDlg::m_ptrData->UpdateQstionID(base);
m_ctrQstionList.DeleteAllItems();
ShowQstions();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -