📄 nongchemanage.cpp
字号:
// NongCheManage.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "NongCheManage.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include "ChildInputFrm.h"
#include "ChildQueryFrm.h"
#include "NongCheManageDoc.h"
#include "NongCheManageView.h"
#include "InputDoc.h"
#include "InputView.h"
#include "QueryDoc.h"
#include "QueryView.h"
#include "Login.h"
#include "ConnectDatabase.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CNongCheManageApp
BEGIN_MESSAGE_MAP(CNongCheManageApp, 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)
END_MESSAGE_MAP()
// CNongCheManageApp 构造
CNongCheManageApp::CNongCheManageApp()
: pringtext(0)
, m_ChildWindowOpen(false)
{
EnableHtmlHelp();
}
// 唯一的一个 CNongCheManageApp 对象
CNongCheManageApp theApp;
// CNongCheManageApp 初始化
BOOL CNongCheManageApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
::CreateMutex(NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("此程序已在运行中!");
return FALSE;
}
InitCommonControls();
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
// 初始化 OLE 库
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
if(!makedatabase())
{
CConnectDatabase dlg;
dlg.DoModal();
return FALSE;
}
CLogin dlg;
if(dlg.DoModal()==IDCANCEL)
return FALSE;
AfxEnableControlContainer();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
LoadStdProfileSettings(0); // 加载标准 INI 文件选项(包括 MRU)
// 注册应用程序的文档模板。文档模板
// 将用作文档、框架窗口和视图之间的连接
/*CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_NongCheManageTYPE,
RUNTIME_CLASS(CNongCheManageDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CNongCheManageView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// 创建主 MDI 框架窗口
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// 仅当具有后缀时才调用 DragAcceptFiles
// 在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生
// 启用拖/放
m_pMainWnd->DragAcceptFiles();
// 启用“DDE 执行”
EnableShellOpen();
RegisterShellFileTypes(TRUE);
// 分析标准外壳命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// 主窗口已初始化,因此显示它并对其进行更新
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();
return TRUE;*/
pDoctemp1 = new CMultiDocTemplate(
IDR_CHILDMENU1,
RUNTIME_CLASS(CNongCheManageDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CNongCheManageView));
pDoctemp2 = new CMultiDocTemplate(
IDR_CHILDMENU2,
RUNTIME_CLASS(CInputDoc), // document class
RUNTIME_CLASS(CChildInputFrm), // frame class
RUNTIME_CLASS(CInputView)); // view class
pDoctemp3 = new CMultiDocTemplate(
IDR_CHILDMENU3,
RUNTIME_CLASS(CQueryDoc), // document class
RUNTIME_CLASS(CChildQueryFrm), // frame class
RUNTIME_CLASS(CQueryView)); // view class
if(!pDoctemp1)
{
AfxMessageBox("建立文档 NongCheManageDoc 失败!");
return FALSE;
}
if(!pDoctemp2)
{
AfxMessageBox("建立文档 InputDoc 失败!");
return FALSE;
}
if(!pDoctemp3)
{
AfxMessageBox("建立文档 QueryDoc 失败!");
return FALSE;
}
AddDocTemplate(pDoctemp1);
AddDocTemplate(pDoctemp2);
AddDocTemplate(pDoctemp3);
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();
return TRUE;
}
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
public:
CHyperLink m_static1;
CHyperLink m_static2;
CHyperLink m_static3;
virtual BOOL OnInitDialog();
CStaticEx m_statica;
CStaticEx m_statica2;
CStaticEx m_staticb;
CStaticEx m_staticb2;
CStaticEx m_staticc;
CStaticEx m_staticd;
CStaticEx m_staticd2;
CStaticEx m_static4;
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
EnableActiveAccessibility();
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC1, m_static1);
DDX_Control(pDX, IDC_STATIC2, m_static2);
DDX_Control(pDX, IDC_STATIC3, m_static3);
DDX_Control(pDX, IDC_STATICA, m_statica);
DDX_Control(pDX, IDC_STATICA2, m_statica2);
DDX_Control(pDX, IDC_STATICB, m_staticb);
DDX_Control(pDX, IDC_STATICB2, m_staticb2);
DDX_Control(pDX, IDC_STATICC, m_staticc);
DDX_Control(pDX, IDC_STATICD, m_staticd);
DDX_Control(pDX, IDC_STATICD2, m_staticd2);
DDX_Control(pDX, IDC_STATIC4, m_static4);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// 用于运行对话框的应用程序命令
void CNongCheManageApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_statica.textColor(RGB(0,0,160));
m_statica2.textColor(RGB(0,0,255));
m_staticb.textColor(RGB(0,0,160));
m_staticb2.textColor(RGB(0,0,255));
m_staticc.textColor(RGB(0,0,160));
m_staticd.textColor(RGB(0,0,160));
m_staticd2.textColor(RGB(0,0,160));
m_static4.textColor(RGB(0,0,255));
m_static1.SetURL("mailto:lswandym@163.com");
m_static1.ModifyLinkStyle(0, CHyperLink::StyleDownClick);
m_static2.SetURL("mailto:imkfwfnh@163.com");
m_static2.ModifyLinkStyle(0, CHyperLink::StyleDownClick);
return TRUE;
}
// CNongCheManageApp 消息处理程序
int CNongCheManageApp::ExitInstance()
{
this->m_pConn->Close();
this->m_pConn=NULL;
return CWinApp::ExitInstance();
}
BOOL CNongCheManageApp::makedatabase()
{
HRESULT hRes;
try
{
hRes=this->m_pConn.CreateInstance(_T("ADODB.Connection"));
m_pConn->Open("Provider=SQLOLEDB.1;Data Source=127.0.0.1;Initial Catalog=NJ2007","sa","123456",adConnectUnspecified);
}
catch(_com_error e)
{
CString strComError;
strComError.Format("连接数据库服务器失败,请在[确定]后连接数据库!\r\n错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s",
e.Error(), // 错误编号
e.ErrorMessage(), // 错误信息
(LPCSTR) e.Source(), // 错误源
(LPCSTR) e.Description()); // 错误描述
::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION);
return FALSE;
}
return TRUE;
}
CString CNongCheManageApp::GetBrowsePath()
{
CString m_path(_T(""));
LPMALLOC lpMalloc;
CHAR szDisplayName[MAX_PATH];
CHAR szBuffer[MAX_PATH];
if ( ::SHGetMalloc( &lpMalloc ) != NOERROR )
{
AfxMessageBox( "执行路径错误,请退出后重试!" );
return CString();
}
BROWSEINFO BrowseInfo;
ZeroMemory(&BrowseInfo,sizeof(BROWSEINFO));
BrowseInfo.hwndOwner = NULL;
BrowseInfo.pidlRoot = NULL;
BrowseInfo.pszDisplayName = szDisplayName;
BrowseInfo.lpfn = NULL;
BrowseInfo.lParam = 0;
LPITEMIDLIST lpItemIDList;
if ( ( lpItemIDList = ::SHBrowseForFolder( &BrowseInfo ) ) != NULL )
{
if ( ::SHGetPathFromIDList( lpItemIDList, szBuffer ) )
{
if ( szBuffer[0] == '\0' )
{
AfxMessageBox( "无效路径,重新选择!");
return CString();
}
m_path = szBuffer;
}
else
{
AfxMessageBox( "无效路径,请重新选择!");
return CString();
}
}
lpMalloc->Free( lpItemIDList );
lpMalloc->Release();
if(m_path.GetLength()<1)
return CString();
if(m_path.GetAt(m_path.GetLength()-1)!='\\')
m_path+="\\";
return m_path;
}
CString CNongCheManageApp::GetPcInfo(void)
{
CGetMachineInfo m_Info;
CGetSn m_sn;
CString info_sn=m_Info.str_DN_Modol+m_Info.str_DN_Serial+m_Info.str_DN_ControllerRevision+m_Info.str_HardDeskSize+m_Info.str_HardDeskBufferSize+m_Info.str_HardDeskType+m_Info.str_Controller;
m_sn.GetBiosSn();
m_sn.GetCpuSn();
m_sn.GetIDESn();
m_sn.GetNetSn();
info_sn+=m_sn.ConvertToString();
int x=info_sn.GetLength();
CString str,str1;
str=str1=_T("");
for(int n=0;n<x;n++)
{
if(info_sn.GetAt(n)<127 && info_sn.GetAt(n)>0)
{
str1.Format("%c",info_sn.GetAt(n));
str+=str1;
}
}
return str;
}
bool CNongCheManageApp::ConSqlDB()//连接SQL数据库服务器
{
try
{
this->m_pConn.CreateInstance("ADODB.Connection");
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("初始化OLE环境失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
ASSERT(m_pConnection != NULL);
try
{
this->m_pConn->Open("Driver={SQL Server};Server=127.0.0.1;Option=3;DATABASE=;UID=sa;PWD=;","","",adModeUnknown);
}
catch(_com_error e)
{
CString strComError;
strComError.Format("连接数据库服务器失败!\r\n错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s",
e.Error(), // 错误编号
e.ErrorMessage(), // 错误信息
(LPCSTR) e.Source(), // 错误源
(LPCSTR) e.Description()); // 错误描述
::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION);
return false;
}
return true;
}
bool CNongCheManageApp::AttachSqlDB(LPCTSTR dbname,LPCTSTR file1,LPCTSTR file2)//附加指定SQL数据库
{
ASSERT(m_pConnection != NULL);
ASSERT(strcmp(dbname, _T("")) != 0);
ASSERT(strcmp(file1, _T("")) != 0);
ASSERT(strcmp(file2, _T("")) != 0);
try
{
CString lpstrExec(_T("EXEC sp_attach_db @dbname = N'"));
lpstrExec+=dbname;
lpstrExec+="' , @filename1 = N'";
lpstrExec+=file1;
lpstrExec+="' , @filename2 = N'";
lpstrExec+=file2;
lpstrExec+="'";
this->m_pConn->Execute(_bstr_t(lpstrExec), NULL, adCmdText);
}
catch(_com_error &e)
{
CString strComError;
strComError.Format("错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s",
e.Error(), // 错误编号
e.ErrorMessage(), // 错误信息
(LPCSTR) e.Source(), // 错误源
(LPCSTR) e.Description()); // 错误描述
::MessageBox(NULL,"恢复数据库连接失败\r\n"+strComError,"错误",MB_ICONEXCLAMATION);
return false;
}
return true;
}
CString CNongCheManageApp::GetReg(void)
{
return CString();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -