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

📄 mainfrm.cpp

📁 完整的汽配查询软件
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "TProd.h"
#include "GfxOutBarCtrl.h"
#include "Introduction.h"
#include "TProdView.h"
#include "SeachPage.h"
#include "InputPass.h"
#include "AdminPage.h"
#include "Backup.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CTProdApp theApp;
extern CString select;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_GFX_LARGEICON, OnGfxLargeicon)
	ON_UPDATE_COMMAND_UI(ID_GFX_LARGEICON, OnUpdateGfxLargeicon)
	ON_COMMAND(ID_GFX_SMALLICON, OnGfxSmallicon)
	ON_UPDATE_COMMAND_UI(ID_GFX_SMALLICON, OnUpdateGfxSmallicon)
	ON_WM_CLOSE()
	ON_COMMAND(ID_CO_INTRODUCTION, OnCoIntroduction)
	ON_COMMAND(ID_CO_HOMEPAGE, OnCoHomepage)
	ON_COMMAND(ID_SEARCH_PAGE, OnSearchPage)
	ON_COMMAND(ID_ADMIN_PAGE, OnAdminPage)
	ON_COMMAND(ID_DATA_BAK, OnDataBak)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_OUTBAR_NOTIFY, OnOutbarNotify)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
  	if (!m_hotToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_hotToolBar.LoadToolBar(IDR_HOTBAR))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}


		// Set up hot bar image lists.
	CImageList	imageList;
	CBitmap		bitmap;

	// Create and set the normal toolbar image list.
	bitmap.LoadBitmap(IDB_TOOLBAR_COLD);
	imageList.Create(32, 30, ILC_COLORDDB|ILC_MASK, 13, 1);
	imageList.Add(&bitmap, RGB(255,0,255));
	m_hotToolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
	imageList.Detach();
	bitmap.Detach();

	// Create and set the hot toolbar image list.
	bitmap.LoadBitmap(IDB_TOOLBAR_HOT);
	imageList.Create(32, 30, ILC_COLORDDB|ILC_MASK, 13, 1);
	imageList.Add(&bitmap, RGB(255,0,255));
	m_hotToolBar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
	imageList.Detach();
	bitmap.Detach();    


	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_hotToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_hotToolBar);

	//动画出现窗口
//	AnimateWindow(GetSafeHwnd(),500,AW_CENTER);
	//应用程序窗口放置在屏幕正中央,在MainFrame的OnCreate函数中加入:
	CenterWindow(GetDesktopWindow());

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	//设定程序屏幕大小
	cs.cx=800;
    cs.cy=600;
    //去掉最大化按钮
	cs.style &= ~WS_MAXIMIZEBOX; 

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
if (!wndSplitter.CreateStatic(this, 1, 2)) return false;

	if (!wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0,0), pContext)) return false;

	DWORD dwf = CGfxOutBarCtrl::fDragItems|
				CGfxOutBarCtrl::fEditGroups|
				CGfxOutBarCtrl::fEditItems|
				CGfxOutBarCtrl::fRemoveGroups|
				CGfxOutBarCtrl::fRemoveItems|
				CGfxOutBarCtrl::fAddGroups|
				CGfxOutBarCtrl::fAnimation;

	wndBar.Create(WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), &wndSplitter,
		wndSplitter.IdFromRowCol(0, 0), dwf);
	wndBar.SetOwner(this);

	imaLarge.Create(IDB_IMAGELIST, 32, 0, RGB(128,128,128));
	imaSmall.Create(IDB_SMALL_IMAGELIST, 16, 0, RGB(128,128,128));

	wndBar.SetImageList(&imaLarge, CGfxOutBarCtrl::fLargeIcon);
	wndBar.SetImageList(&imaSmall, CGfxOutBarCtrl::fSmallIcon);

	wndTree.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, 
		CRect(0,0,0,0), &wndBar, 1010);
	wndTree.SetImageList(&imaSmall, TVSIL_NORMAL);

	wndBar.SetAnimationTickCount(10);

	wndBar.SetAnimSelHighlight(200);

	//Blue Sky加入的控制
	wndBar.SetIfQueryRemove(true);

	//增加目录
	wndBar.AddFolder("Index By Maker", 0);
	wndBar.AddFolder("Index By Sort", 1);
	wndBar.AddFolder("Index By App", 2);


	_variant_t var,var2;
	//Index by O.E.目录
	try
	{
		m_pRecordsetOE.CreateInstance("ADODB.Recordset");
		m_pRecordsetOE->Open("SELECT * FROM oeinfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		m_bSuccess = TRUE;
		while(!m_pRecordsetOE->adoEOF)
		{
			//取得oe厂商名字
			var = m_pRecordsetOE->GetCollect("oename");
			if(var.vt != VT_NULL)
				vOename = (LPCSTR)_bstr_t(var);
			else vOename=(LPCSTR)_bstr_t("NULL");
			//取得厂商图标号
			var2 = m_pRecordsetOE->GetCollect("oeimage");
			vOeimage = var2.lVal;
			//添加一个按钮
			wndBar.InsertItem(0, 0, (_bstr_t)vOename, vOeimage-1, 0);
			m_pRecordsetOE->MoveNext();
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("Read Database Failed!");///显示错误信息
	}

	//Index by sort目录
	try
	{
		m_pRecordsetSORT.CreateInstance("ADODB.Recordset");
		m_pRecordsetSORT->Open("SELECT * FROM prodsort",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		m_bSuccess = TRUE;
		while(!m_pRecordsetSORT->adoEOF)
		{
			//取得产品分类名字
			var = m_pRecordsetSORT->GetCollect("sortname");
			if(var.vt != VT_NULL)
				vSortname = (LPCSTR)_bstr_t(var);
			else vSortname=(LPCSTR)_bstr_t("NULL");
			//取得分类图标号
			var2 = m_pRecordsetSORT->GetCollect("sortimage");
			vSoftimage = var2.lVal;
			//添加一个按钮
			wndBar.InsertItem(1, 0, (_bstr_t)vSortname, vSoftimage-1, 0);
			m_pRecordsetSORT->MoveNext();
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("Read Database Failed!");///显示错误信息
	}
	//Index by APP目录
//		try
//	{
//		m_pRecordsetAPP.CreateInstance("ADODB.Recordset");
//		m_pRecordsetAPP->Open("SELECT * FROM prodsort",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
//		m_bSuccess = TRUE;
//		while(!m_pRecordsetAPP->adoEOF)
//		{
//			//取得产品分类名字
//			var = m_pRecordsetAPP->GetCollect("sortname");
//			if(var.vt != VT_NULL)
//				vSortname = (LPCSTR)_bstr_t(var);
//			else vSortname=(LPCSTR)_bstr_t("NULL");
//			//取得分类图标号
//			var2 = m_pRecordsetSORT->GetCollect("sortimage");
//			vSoftimage = var2.lVal;
//			//添加一个按钮
//			wndBar.InsertItem(1, 0, (_bstr_t)vSortname, vSoftimage-1, 0);
//			m_pRecordsetSORT->MoveNext();
//		}
//	}
//	catch(_com_error e)///捕捉异常
//	{
//		AfxMessageBox("Read Database Failed!");///显示错误信息
//	}


	wndBar.SetSelFolder(0);//初始显示目录

	CRect r;
	GetClientRect(&r);

	int w1 = r.Width()/5;
	int w2 = r.Width()/4;

	wndSplitter.SetColumnInfo( 0, w1, 0 );
	wndSplitter.SetColumnInfo( 1, w2, 0 );

	wndSplitter.RecalcLayout();


	return true;
}
void CMainFrame::OnGfxLargeicon() 
{
	wndBar.SetSmallIconView(false);
}

void CMainFrame::OnUpdateGfxLargeicon(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(!wndBar.IsSmallIconView());
}

void CMainFrame::OnGfxSmallicon() 
{
	wndBar.SetSmallIconView(true);
	
}

void CMainFrame::OnUpdateGfxSmallicon(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(wndBar.IsSmallIconView());
}

long CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
{
	switch (wParam)
	{
		case NM_OB_ITEMCLICK:
		// cast the lParam to an integer to get the clicked item
			{
				int index = (int) lParam;
				CString cs1;
				cs1 = wndBar.GetItemText(index);
				select=cs1;
			}
		return 0;

		case NM_OB_ONLABELENDEDIT:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited item
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				TRACE2("Editing item %d, new text:%s\n", pOI->index, pOI->cText);
			}
		return 1;

		case NM_OB_ONGROUPENDEDIT:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited folder
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				TRACE2("Editing folder %d, new text:%s\n", pOI->index, pOI->cText);
			}
		return 1;

		case NM_OB_DRAGITEM:
		// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the dragged items
		// return 1 to do the change and 0 to cancel it
			{
				OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
				TRACE2("Drag item %d at position %d\n", pOI->iDragFrom, pOI->iDragTo);
			}
		return 1;
	}
	return 0;
}

void CMainFrame::OnClose() 
{
//	AnimateWindow(GetSafeHwnd(),500,AW_HIDE|AW_CENTER);	
	CFrameWnd::OnClose();
}

void CMainFrame::OnCoIntroduction() 
{
	CIntroduction Introduction;
	Introduction.DoModal();	
}

void CMainFrame::OnCoHomepage() 
{
	ShellExecute(this->m_hWnd,"open","http://www.tuopu.com","","", SW_SHOW );	
}

void CMainFrame::OnSearchPage() 
{
	// TODO: Add your command handler code here
	CSeachPage Search;
	Search.DoModal();
}

void CMainFrame::OnAdminPage() 
{
	// TODO: Add your command handler code here
	CInputPass InputPass;
	InputPass.DoModal();
	CAdminPage Admin;
	if (InputPass.m_admin=="Tuopu" && InputPass.m_pass=="gninil")
		Admin.DoModal();
	else 		
		MessageBox("Sorry,your password is incorrect!\n  You can't Admin the database!");
}



void CMainFrame::OnDataBak() 
{
	// TODO: Add your command handler code here
	CBackup Backup;
	Backup.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -