⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nongchemanage.cpp

📁 一个农用车辆管理系统的雏形
💻 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 + -