📄 scoregather.cpp
字号:
// ScoreGather.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "ScoreGather.h"
#include "MainFrm.h"
#include "ScoreGatherDoc.h"
#include "ScoreGatherView.h"
#include "MySystemSet.h"
#include "MyIndexDataSet.h"
#include "MyQueryIndexData.h"
#include "MyDataEdit.h"
#include "MyLeadIn.h"
#include "MyStart.h"
#include "MyOverGather.h"
#include "MyWriteGatherPage.h"
#include "MyBackupRestoreData.h"
#include "MyUserLogin.h"
#include "ClsData.h"
#include ".\scoregather.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define IDS_WEBADDR _T("http://www.lswvc.com")
// CScoreGatherApp
BEGIN_MESSAGE_MAP(CScoreGatherApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// 基于文件的标准文档命令
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// 标准打印设置命令
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
ON_COMMAND(ID_SYSTEMSET, OnSystemset)
ON_COMMAND(ID_DATASET, OnDataset)
ON_COMMAND(ID_DATAEDIT, OnDataedit)
ON_COMMAND(ID_INPUTDATA, OnInputdata)
ON_COMMAND(ID_PRINTDATA, OnPrintdata)
ON_COMMAND(ID_WRITEGATHERPAGE, OnWritegatherpage)
ON_COMMAND(ID_OVERGATHER, OnOvergather)
ON_COMMAND(ID_START, OnStart)
ON_COMMAND(ID_DATASETQUERY, OnDatasetQuery)
ON_COMMAND(ID_DATAEDITQUERY, OnDataEditQuery)
ON_COMMAND(ID_WRITEGATHERQUERY, OnWriteGatherQuery)
ON_COMMAND(ID_DATABACKUP, OnDatabackup)
ON_COMMAND(ID_DATARESTORE, OnDatarestore)
ON_COMMAND(ID_CLSDATA, OnClsdata)
END_MESSAGE_MAP()
// CScoreGatherApp 构造
CScoreGatherApp::CScoreGatherApp()
{
EnableHtmlHelp();
ClassXP();
connString=_T("Data Source=ScoreGather;UID=sa;PWD=;");
}
// 唯一的一个 CScoreGatherApp 对象
CScoreGatherApp theApp;
// CScoreGatherApp 初始化
BOOL CScoreGatherApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
InitCommonControls();
CWinApp::InitInstance();
// 初始化 OLE 库
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
/*if(!makedatabase())
return FALSE;
CMyUserLogin dlg;
if(dlg.DoModal()==IDOK)
return FALSE;*/
AfxEnableControlContainer();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("ScoreGather"));
//LoadStdProfileSettings(0); // 加载标准 INI 文件选项(包括 MRU)
// 注册应用程序的文档模板。文档模板
// 将用作文档、框架窗口和视图之间的连接
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CScoreGatherDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CScoreGatherView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// 分析标准外壳命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// 唯一的一个窗口已初始化,因此显示它并对其进行更新
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
::CreateMutex(NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("此程序已在运行中!");
CWnd* pPrevWnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
while(pPrevWnd)
{
if(::GetProp(pPrevWnd->GetSafeHwnd(),m_pszExeName))
{
if(pPrevWnd->IsIconic())
pPrevWnd->ShowWindow(SW_RESTORE);
pPrevWnd->SetForegroundWindow();
pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
return FALSE;
}
pPrevWnd=pPrevWnd->GetWindow(GW_HWNDNEXT);
}
return FALSE;
}
::SetProp(m_pMainWnd->GetSafeHwnd(),m_pszExeName,(HANDLE)1);
// 仅当存在后缀时才调用 DragAcceptFiles,
// 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生
return TRUE;
}
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
CHyperLink m_HomePageLink;
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
private:
CXPButton m_aboutok;
public:
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
virtual BOOL OnInitDialog();
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDOK, m_aboutok);
DDX_Control(pDX, IDC_HOMEPAGE, m_HomePageLink);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// 用于运行对话框的应用程序命令
void CScoreGatherApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
// CScoreGatherApp 消息处理程序
void CScoreGatherApp::OnSystemset()
{
CMySystemSet dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnDataset()
{
CMyIndexDataSet dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnDataedit()
{
CMyDataEdit dlg;
dlg.type=1;
dlg.DoModal();
}
void CScoreGatherApp::OnInputdata()
{
CMyLeadIn dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnPrintdata()
{
CMyLeadIn dlg;
dlg.WindowsType=1;
dlg.DoModal();
}
void CScoreGatherApp::OnWritegatherpage()
{
CMyWriteGatherPage dlg;
dlg.type=1;
dlg.DoModal();
}
void CScoreGatherApp::OnOvergather()
{
CMyOverGather dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnStart()
{
CMyStart dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnDatasetQuery()
{
CMyQueryIndexData dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnDataEditQuery()
{
CMyDataEdit dlg;
dlg.type=0;
dlg.DoModal();
}
void CScoreGatherApp::OnWriteGatherQuery()
{
CMyWriteGatherPage dlg;
dlg.type=0;
dlg.DoModal();
}
void CScoreGatherApp::OnDatabackup()
{
CMyBackupRestoreData dlg;
dlg.DoModal();
}
void CScoreGatherApp::OnDatarestore()
{
CMyBackupRestoreData dlg;
dlg.type=1;
dlg.DoModal();
}
void CScoreGatherApp::OnClsdata()
{
CClsData dlg;
dlg.DoModal();
}
BOOL CAboutDlg::OnEraseBkgnd(CDC* pDC)
{
CBrush brush(RGB(250,220,250));
CBrush* pOldBrush=pDC->SelectObject(&brush);
CRect rcClip;
pDC->GetClipBox(&rcClip);
pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(nCtlColor!=CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(40,20,255));
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(250,220,250));
return (HBRUSH) B;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_HomePageLink.SetURL(IDS_WEBADDR);
m_HomePageLink.SetUnderline(CHyperLink::ulAlways);
return TRUE;
}
int CScoreGatherApp::MakeSQLServerODBCDSN(LPCTSTR strDBServer,LPCTSTR strDBName,LPCTSTR strDSN,LPCTSTR strUID)
{
BOOL bInstallDriver=TRUE;
CRegKey regKey;
LONG lRet=regKey.Open(HKEY_LOCAL_MACHINE,"Software\\ODBC\\ODBCINST.INI\\SQL Server");
if(lRet!=ERROR_SUCCESS)
bInstallDriver=FALSE;
else
{
char szDirverPath[MAX_PATH]="";
DWORD dwCount=100;
lRet=regKey.QueryValue(szDirverPath,"Driver",&dwCount);
if((lRet!=ERROR_SUCCESS)||(dwCount<1))
{
DWORD dwErr=GetLastError();
bInstallDriver=FALSE;
}
regKey.Close();
}
if(!bInstallDriver)
return -1;
CString strKeyValueName="Software\\ODBC\\ODBC.INI\\";
strKeyValueName+=strDSN;
lRet=regKey.Create(HKEY_LOCAL_MACHINE,strKeyValueName);
if(lRet!=ERROR_SUCCESS)
return -2;
regKey.SetValue(strDBName,"Database");
regKey.SetValue("SQLSrv32.dll","Driver");
regKey.SetValue(strDBServer,"Server");
regKey.SetValue(strUID,"LastUser");
regKey.m_hKey=HKEY_LOCAL_MACHINE;
regKey.SetKeyValue("Software\\ODBC\\ODBC.INI\\ODBC Data Sources","SQL Server",strDSN);
regKey.Close();
return 0;
}
BOOL CScoreGatherApp::makedatabase()
{
HRESULT hRes;
try
{
//MakeSQLServerODBCDSN("(local)","ScoreGather","ScoreGather","sa");
hRes=m_pConn.CreateInstance(_T("ADODB.Connection"));
m_pConn->ConnectionTimeout = 8;
hRes=m_pConn->Open(_bstr_t((LPCTSTR) connString),
_T(""),_T(""),adModeUnknown);
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("连接数据库失败:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -