Browse Source

1、基本完成ChildFrameList类;
2、禁用Tab标签页的方法;

sat23 4 năm trước cách đây
mục cha
commit
0fb4631f1b

+ 49 - 0
CTSManager/CTSManager/CFormViewBrand.cpp

@@ -0,0 +1,49 @@
+// CFormViewBrand.cpp: 实现文件
+//
+
+#include "pch.h"
+#include "CTSManager.h"
+#include "CFormViewBrand.h"
+
+
+// CFormViewBrand
+
+IMPLEMENT_DYNCREATE(CFormViewBrand, CFormView)
+
+CFormViewBrand::CFormViewBrand()
+	: CFormView(IDD_FORMVIEW_BRAND)
+{
+
+}
+
+CFormViewBrand::~CFormViewBrand()
+{
+}
+
+void CFormViewBrand::DoDataExchange(CDataExchange* pDX)
+{
+	CFormView::DoDataExchange(pDX);
+}
+
+BEGIN_MESSAGE_MAP(CFormViewBrand, CFormView)
+END_MESSAGE_MAP()
+
+
+// CFormViewBrand 诊断
+
+#ifdef _DEBUG
+void CFormViewBrand::AssertValid() const
+{
+	CFormView::AssertValid();
+}
+
+#ifndef _WIN32_WCE
+void CFormViewBrand::Dump(CDumpContext& dc) const
+{
+	CFormView::Dump(dc);
+}
+#endif
+#endif //_DEBUG
+
+
+// CFormViewBrand 消息处理程序

+ 32 - 0
CTSManager/CTSManager/CFormViewBrand.h

@@ -0,0 +1,32 @@
+#pragma once
+
+
+
+// CFormViewBrand 窗体视图
+
+class CFormViewBrand : public CFormView
+{
+	DECLARE_DYNCREATE(CFormViewBrand)
+
+protected:
+	CFormViewBrand();           // 动态创建所使用的受保护的构造函数
+	virtual ~CFormViewBrand();
+
+public:
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = IDD_FORMVIEW_BRAND };
+#endif
+#ifdef _DEBUG
+	virtual void AssertValid() const;
+#ifndef _WIN32_WCE
+	virtual void Dump(CDumpContext& dc) const;
+#endif
+#endif
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};
+
+

+ 49 - 0
CTSManager/CTSManager/CFormViewQuater.cpp

@@ -0,0 +1,49 @@
+// CFormViewQuater.cpp: 实现文件
+//
+
+#include "pch.h"
+#include "CTSManager.h"
+#include "CFormViewQuater.h"
+
+
+// CFormViewQuater
+
+IMPLEMENT_DYNCREATE(CFormViewQuater, CFormView)
+
+CFormViewQuater::CFormViewQuater()
+	: CFormView(IDD_FORMVIEW_QUATER)
+{
+
+}
+
+CFormViewQuater::~CFormViewQuater()
+{
+}
+
+void CFormViewQuater::DoDataExchange(CDataExchange* pDX)
+{
+	CFormView::DoDataExchange(pDX);
+}
+
+BEGIN_MESSAGE_MAP(CFormViewQuater, CFormView)
+END_MESSAGE_MAP()
+
+
+// CFormViewQuater 诊断
+
+#ifdef _DEBUG
+void CFormViewQuater::AssertValid() const
+{
+	CFormView::AssertValid();
+}
+
+#ifndef _WIN32_WCE
+void CFormViewQuater::Dump(CDumpContext& dc) const
+{
+	CFormView::Dump(dc);
+}
+#endif
+#endif //_DEBUG
+
+
+// CFormViewQuater 消息处理程序

+ 32 - 0
CTSManager/CTSManager/CFormViewQuater.h

@@ -0,0 +1,32 @@
+#pragma once
+
+
+
+// CFormViewQuater 窗体视图
+
+class CFormViewQuater : public CFormView
+{
+	DECLARE_DYNCREATE(CFormViewQuater)
+
+protected:
+	CFormViewQuater();           // 动态创建所使用的受保护的构造函数
+	virtual ~CFormViewQuater();
+
+public:
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = IDD_FORMVIEW_QUATER };
+#endif
+#ifdef _DEBUG
+	virtual void AssertValid() const;
+#ifndef _WIN32_WCE
+	virtual void Dump(CDumpContext& dc) const;
+#endif
+#endif
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};
+
+

+ 2 - 0
CTSManager/CTSManager/CTSManager.cpp

@@ -192,6 +192,7 @@ BOOL CCTSManagerApp::InitInstance()
 
 	// 创建主 MDI 框架窗口
 	CMainFrame* pMainFrame = new CMainFrame;
+	pMainFrame->m_pDoc = (CCTSManagerDoc*)pDocTemplate->CreateNewDocument();
 	if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
 	{
 		delete pMainFrame;
@@ -202,6 +203,7 @@ BOOL CCTSManagerApp::InitInstance()
 
 	// 分析标准 shell 命令、DDE、打开文件操作的命令行
 	CCommandLineInfo cmdInfo;
+	cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
 	ParseCommandLine(cmdInfo);
 
 

BIN
CTSManager/CTSManager/CTSManager.rc


+ 6 - 0
CTSManager/CTSManager/CTSManager.vcxproj

@@ -194,6 +194,9 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClInclude Include="CalendarBar.h" />
+    <ClInclude Include="CFormViewBrand.h" />
+    <ClInclude Include="CFormViewQuater.h" />
+    <ClInclude Include="ChildFrameList.h" />
     <ClInclude Include="ChildFrm.h" />
     <ClInclude Include="ClassView.h" />
     <ClInclude Include="CTSManager.h" />
@@ -220,6 +223,9 @@
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="CalendarBar.cpp" />
+    <ClCompile Include="CFormViewBrand.cpp" />
+    <ClCompile Include="CFormViewQuater.cpp" />
+    <ClCompile Include="ChildFrameList.cpp" />
     <ClCompile Include="ChildFrm.cpp" />
     <ClCompile Include="ClassView.cpp" />
     <ClCompile Include="CTSManager.cpp" />

+ 18 - 0
CTSManager/CTSManager/CTSManager.vcxproj.filters

@@ -93,6 +93,15 @@
     <ClInclude Include="ImageHelper.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="ChildFrameList.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="CFormViewQuater.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="CFormViewBrand.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="CTSManager.cpp">
@@ -155,6 +164,15 @@
     <ClCompile Include="ImageHelper.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="ChildFrameList.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="CFormViewQuater.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="CFormViewBrand.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="CTSManager.rc">

+ 4 - 0
CTSManager/CTSManager/ChildFrameList.cpp

@@ -0,0 +1,4 @@
+#include "pch.h"
+#include "ChildFrameList.h"
+
+void* CChildFrameList::m_pChildViewHead = NULL;

+ 194 - 0
CTSManager/CTSManager/ChildFrameList.h

@@ -0,0 +1,194 @@
+#pragma once
+
+#include "ChildFrm.h"
+
+class CChildFrameList
+{
+	CDocument* m_pCurrentDoc;
+	CFrameWnd* m_pCurrentFrame;
+public:
+	CChildFrameList(CFrameWnd* pFrameWnd) {
+		m_pCurrentFrame = pFrameWnd;
+		m_pChildViewHead = NULL;
+	};
+
+	virtual ~CChildFrameList() {};
+
+	typedef struct _TabView_ {
+		// 窗口名称;
+		TCHAR szName[MAX_PATH] = { 0 };
+		// 窗口句柄;
+		CWnd* pViewWnd = NULL;
+		// 下一个窗口;
+		_TabView_* pNextTab = NULL;
+	}TABVIEW, * pTABVIEW;
+
+	static void* m_pChildViewHead;
+
+public:
+	void SetDoc(CDocument* pDoc) { m_pCurrentDoc = pDoc; };
+
+	// 获取视图名称;
+	TCHAR* GetViewName(const CWnd* pViewWnd) const
+	{
+		if (!pViewWnd || !m_pChildViewHead)
+			return NULL;
+
+		TABVIEW* pTabView = (TABVIEW*)m_pChildViewHead;
+		do
+		{
+			if (pViewWnd == pTabView->pViewWnd)
+				return pTabView->szName;
+			pTabView = pTabView->pNextTab;
+		} while (pTabView);
+
+		return NULL;
+	}
+
+	// 获取视图窗口句柄;
+	CWnd* GetViewWnd(const TCHAR* pViewName)
+	{
+		if (!pViewName || !m_pChildViewHead)
+			return NULL;
+
+		TABVIEW* pTabView = (TABVIEW*)m_pChildViewHead;
+		do
+		{
+			// 注意如果是中文比较,该函数是否会有问题;
+			if (_tcsicmp(pViewName, pTabView->szName) == 0)
+				return pTabView->pViewWnd;
+			pTabView = pTabView->pNextTab;
+		} while (pTabView);
+
+		return NULL;
+	}
+
+	// 添加新的视图窗口;
+	void AppendView(const TCHAR* pszViewName, CRuntimeClass* pNewViewClass, UINT nIcon, UINT nID)
+	{
+		CChildFrame* pViewWnd = (CChildFrame*)GetViewWnd(pszViewName);
+		// 已存在;
+		if (pViewWnd) {
+			pViewWnd->MDIActivate();
+			return;
+		}
+
+		pViewWnd = new CChildFrame();
+		if (pViewWnd)
+		{
+			TABVIEW* pNewView = new TABVIEW();
+			if (pNewView == NULL) {
+				delete pViewWnd;
+				return;
+			}
+
+			// 视图窗口;
+			CCreateContext context;
+			context.m_pLastView = NULL;
+			context.m_pCurrentFrame = m_pCurrentFrame;
+			context.m_pCurrentDoc = m_pCurrentDoc;
+			context.m_pNewViewClass = pNewViewClass;
+			context.m_pNewDocTemplate = m_pCurrentDoc->GetDocTemplate();
+
+			if (!pViewWnd->LoadFrame(nID, WS_CHILDWINDOW, m_pCurrentFrame, &context)) {
+				delete pViewWnd;
+				return;
+			}
+
+			pNewView->pViewWnd = (CWnd*)pViewWnd;
+			memcpy(pNewView->szName, pszViewName, MAX_PATH);
+			pNewView->pNextTab = (TABVIEW*)m_pChildViewHead;
+			m_pChildViewHead = (void*)pNewView;
+			pViewWnd->InitialUpdateFrame(NULL, true);  //真正创建
+			pViewWnd->ShowWindow(SW_MAXIMIZE);
+		}
+	}
+
+	void CloseView(const TCHAR* pszViewName)
+	{
+		if (!pszViewName || !m_pChildViewHead)
+			return;
+
+		// 查找视图;
+		TABVIEW* pLastTab = NULL, * pTabView = (TABVIEW*)m_pChildViewHead;
+		do
+		{
+			if (_tcsicmp(pTabView->szName, pszViewName) == 0) {
+				pTabView->pViewWnd->SendMessage(WM_CLOSE);
+				if (pLastTab == NULL)
+					m_pChildViewHead = pTabView->pNextTab;
+				else
+					pLastTab->pNextTab = pTabView->pNextTab;
+				// 删除对象;
+				delete pTabView; pTabView = NULL;
+				break;
+			}
+			pLastTab = pTabView;
+			pTabView = pTabView->pNextTab;
+		} while (pTabView);
+	}
+
+	void CloseView(CWnd* pViewWnd)
+	{
+		if (!pViewWnd || !m_pChildViewHead)
+			return;
+
+		// 查找视图;
+		TABVIEW* pLastTab = NULL, * pTabView = (TABVIEW*)m_pChildViewHead;
+		do
+		{
+			if (pTabView->pViewWnd == pViewWnd) {
+				pTabView->pViewWnd->SendMessage(WM_CLOSE);
+				if (pLastTab == NULL)
+					m_pChildViewHead = pTabView->pNextTab;
+				else
+					pLastTab->pNextTab = pTabView->pNextTab;
+				// 删除对象;
+				delete pTabView; pTabView = NULL;
+				break;
+			}
+			pLastTab = pTabView;
+			pTabView = pTabView->pNextTab;
+		} while (pTabView);
+
+	}
+
+	void CloseAllView()
+	{
+		if (!m_pChildViewHead)
+			return;
+
+		TABVIEW* pTabView = (TABVIEW*)m_pChildViewHead;
+		do
+		{
+			pTabView->pViewWnd->SendMessage(WM_CLOSE);
+			m_pChildViewHead = pTabView->pNextTab;
+			// 删除对象;
+			delete pTabView; pTabView = NULL;
+			pTabView = pTabView->pNextTab;
+		} while (pTabView);
+	}
+
+	BOOL SwitchView(const TCHAR* pszViewName)
+	{
+		if (!pszViewName || !m_pChildViewHead)
+			return FALSE;
+
+		// 隐藏当前活动视图;
+		CWnd* pActiveWnd = m_pCurrentFrame->GetActiveFrame();
+		if (pActiveWnd)
+			pActiveWnd->ShowWindow(SW_HIDE);
+
+		// 是否已存在该视图;
+		CChildFrame* pViewWnd = (CChildFrame*)GetViewWnd(pszViewName);
+		// 已存在;
+		if (pViewWnd) {
+			pViewWnd->MDIActivate();
+			return TRUE;
+		}
+
+		return FALSE;
+	}
+};
+
+

+ 130 - 1
CTSManager/CTSManager/Database.cpp

@@ -594,7 +594,10 @@ BOOL CDatabase::QueryBrand(std::vector<STBrand>& vtBrand)
 BOOL CDatabase::ImportBrandLogo(std::string brand, std::string file)
 {
 	if (!PathFileExists(file.c_str()))
+	{
+		_dprintf(_T("%s:logo不存在[%s]"), brand.c_str(), file.c_str());
 		return FALSE;
+	}
 
 	// 读出图片;
 	CFile cfile;
@@ -1501,7 +1504,7 @@ void DBTest()
 			STUser stUser;
 			stUser.user = _T("admin");
 			stUser.password = _T("96321");
-			stUser.permission = _T("0000-0000-1111-0011");
+			stUser.permission = _T("1111-1111-1111-1111-1111-1111-1111-1111");
 			CDatabase::GetInstance()->UpdateUser(_T("user"), stUser);
 
 			// 查询用户;
@@ -1511,65 +1514,191 @@ void DBTest()
 			{
 				_dprintf(_T("用户名:%s,用户密码:%s,用户权限:%s\n"), it->user.c_str(), it->password.c_str(), it->permission.c_str());
 			}
+
+			// 删除用户;
+			CDatabase::GetInstance()->DeleteUser("user5");
+			CDatabase::GetInstance()->DeleteUser("user3");
 		}
 
 		if (1)
 		{
 			// 新增品牌;
 			CDatabase::GetInstance()->InsertBrand(_T("SCBC"), _T(""), _T(""), _T(""), _T("SCBC"));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SCBC"), _T("D:\\logo\\r1\\micromax.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("MICROMAX"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("MICROMAX"), _T("D:\\logo\\r1\\micromax.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ARTEL"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ARTEL"), _T("D:\\logo\\r1\\artel.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("PANASONIC"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("PANASONIC"), _T("D:\\logo\\r1\\PANASONIC.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("THOMSON"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("THOMSON"), _T("D:\\logo\\r1\\THOMSON.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("SANYO"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SANYO"), _T("D:\\logo\\r1\\SANYO.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("JVC"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("JVC"), _T("D:\\logo\\r1\\JVC.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("NOKIA"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("NOKIA"), _T("D:\\logo\\r1\\NOKIA.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("EAS-ELECTRIC"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("EAS-ELECTRIC"), _T("D:\\logo\\r1\\EAS-ELECTRIC.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("STRONG"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("STRONG"), _T("D:\\logo\\r1\\STRONG.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("LLOYD"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("LLOYD"), _T("D:\\logo\\r1\\LLOYD.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("CASPER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("CASPER"), _T("D:\\logo\\r1\\CASPER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("CONDOR"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("CONDOR"), _T("D:\\logo\\r1\\CONDOR.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("DENKA"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("DENKA"), _T("D:\\logo\\r1\\DENKA.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ACONATIC"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ACONATIC"), _T("D:\\logo\\r1\\ACONATIC.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("CG"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("CG"), _T("D:\\logo\\r1\\CG.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ORIENT"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ORIENT"), _T("D:\\logo\\r1\\ORIENT.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("KALLEY"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("KALLEY"), _T("D:\\logo\\r1\\KALLEY.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("EVVOLI"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("EVVOLI"), _T("D:\\logo\\r1\\EVVOLI.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("COMPAQ"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("COMPAQ"), _T("D:\\logo\\r1\\COMPAQ.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("VISION-TECHNOLOGY"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("VISION-TECHNOLOGY"), _T("D:\\logo\\r1\\VISION.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("SINGER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SINGER"), _T("D:\\logo\\r1\\SINGER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("HYUNDAI"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("HYUNDAI"), _T("D:\\logo\\r1\\HYUNDAI.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("RECCO"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("RECCO"), _T("D:\\logo\\r1\\RECCO.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("AMSTRAD"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("AMSTRAD"), _T("D:\\logo\\r1\\AMSTRAD.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("HITACHI"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("HITACHI"), _T("D:\\logo\\r1\\HITACHI.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ERITO"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ERITO"), _T("D:\\logo\\r1\\ERITO.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("PIONEER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("PIONEER"), _T("D:\\logo\\r1\\PIONEER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("PEL"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("PEL"), _T("D:\\logo\\r1\\PEL.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("MINISTER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("MINISTER"), _T("D:\\logo\\r1\\MINISTER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("SCHNEIDER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SCHNEIDER"), _T("D:\\logo\\r1\\SCHNEIDER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("INNOS"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("INNOS"), _T("D:\\logo\\r1\\INNOS.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("LUCOMS"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("LUCOMS"), _T("D:\\logo\\r1\\LUCOMS.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("XTREME"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("XTREME"), _T("D:\\logo\\r1\\XTREME.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ALHAFIDH"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ALHAFIDH"), _T("D:\\logo\\r1\\ALHAFIDH.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ESSENTIELB"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ESSENTIELB"), _T("D:\\logo\\r1\\ESSENTIELB.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("MASTER-G"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("MASTER-G"), _T("D:\\logo\\r1\\MASTER-G.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("KAPEK"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("KAPEK"), _T("D:\\logo\\r1\\KAPEK.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("BOTECH"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("BOTECH"), _T("D:\\logo\\r1\\BOTECH.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("HOME-ELITE"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("HOME-ELITE"), _T("D:\\logo\\r1\\HOME-ELITE.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("SAMPO"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SAMPO"), _T("D:\\logo\\r1\\SAMPO.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("TESLA"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("TESLA"), _T("D:\\logo\\r1\\TESLA.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("STREAM-SYSTEM"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("STREAM-SYSTEM"), _T("D:\\logo\\r1\\STREAM-SYSTEM.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("ZTRUST"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("ZTRUST"), _T("D:\\logo\\r1\\ZTRUST.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("AIWA"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("AIWA"), _T("D:\\logo\\r1\\AIWA.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("BOREAL"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("BOREAL"), _T("D:\\logo\\r1\\BOREAL.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("MYSTIC"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("MYSTIC"), _T("D:\\logo\\r1\\MYSTIC.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("POLAROID"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("POLAROID"), _T("D:\\logo\\r1\\POLAROID.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("SCEPTER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("SCEPTER"), _T("D:\\logo\\r1\\SCEPTER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("BROOKSTONE"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("BROOKSTONE"), _T("D:\\logo\\r1\\BROOKSTONE.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("RAYLAN"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("RAYLAN"), _T("D:\\logo\\r1\\RAYLAN.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("PRIME-TECHNICS"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("PRIME-TECHNICS"), _T("D:\\logo\\r1\\PRIME-TECHNICS.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("CHALLENGER"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("CHALLENGER"), _T("D:\\logo\\r1\\CHALLENGER.jpg"));
+
 			CDatabase::GetInstance()->InsertBrand(_T("TELEFUNKEN"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("TELEFUNKEN"), _T("D:\\logo\\r1\\TELEFUNKEN.jpg"));
+
+			CDatabase::GetInstance()->InsertBrand(_T("THE-UHD"), _T(""));
+			CDatabase::GetInstance()->ImportBrandLogo(_T("THE-UHD"), _T("D:\\logo\\r1\\THE-UHD.jpg"));
+
+			// 查询品牌;
+			TCHAR szValue[MAX_PATH] = {0};
+			std::vector<STBrand> vtBrand;
+			CDatabase::GetInstance()->QueryBrand(vtBrand);
+			for ( std::vector<STBrand>::iterator it = vtBrand.begin(); it != vtBrand.end(); it++ )
+			{
+				_dprintf(_T("品牌:%s"), it->name.c_str());
+				_stprintf_s(szValue, _T("D:\\brand\\logo\\%s.jpg"), it->name.c_str());
+				// 导出logo;
+				CDatabase::GetInstance()->ExportBrandLogo(it->name, szValue);
+			}
 		}
 
 		if (0) {

+ 1 - 1
CTSManager/CTSManager/Global.cpp

@@ -25,7 +25,7 @@ namespace Global
 	TCHAR g_szDBName[MAX_PATH] = { 0 };
 	TCHAR g_szDBAccount[MAX_PATH] = { 0 };
 	TCHAR g_szDBPassword[MAX_PATH] = { 0 };
-
+	TCHAR g_szPermission[MAX_PATH] = { 0 };
 	//////////////////////////////////////////////////////////////////////////
 	// È«¾Öº¯Êý;
 

+ 7 - 0
CTSManager/CTSManager/Global.h

@@ -11,6 +11,13 @@ namespace Global
 	extern TCHAR g_szDBName[MAX_PATH];
 	extern TCHAR g_szDBAccount[MAX_PATH];
 	extern TCHAR g_szDBPassword[MAX_PATH];
+	// 权限字段,格式04%d-04%d-....;
+	// 按表分段,按查、改、增、删=0000
+	// 权限等级:删>增>改>查
+	// 8张表,8段;
+	// 0000-0000-0000-0000-0000-0000-0000-0000
+	// [用户表]-[机芯表]-[季度表]-[品牌表]-[季度品牌表]-[分支表]-[服务器表]-[日志表]
+	extern TCHAR g_szPermission[MAX_PATH];
 
 	extern void GetConfig();
 	extern void WriteTextLog(const TCHAR* format, ...);

+ 12 - 2
CTSManager/CTSManager/MainFrm.cpp

@@ -5,6 +5,8 @@
 #include "pch.h"
 #include "framework.h"
 #include "CTSManager.h"
+#include "CFormViewBrand.h"
+#include "CFormViewQuater.h"
 
 #include "MainFrm.h"
 
@@ -50,7 +52,7 @@ static void DelAllMenu(HMENU hMenu)
 
 // CMainFrame 构造/析构
 
-CMainFrame::CMainFrame() noexcept
+CMainFrame::CMainFrame() noexcept :m_ChildFrameList(this)
 {
 	// TODO: 在此添加成员初始化代码
 	theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2008);
@@ -67,6 +69,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	BOOL bNameValid;
 
+#if 0 // 禁用这块代码:不显示视图Tab标签(或者设置EnableMDITabbedGroups参数1FASE)
 	CMDITabInfo mdiTabParams;
 	mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
 	mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
@@ -74,7 +77,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
 	mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
 	EnableMDITabbedGroups(TRUE, mdiTabParams);
-	
+#endif
 	if (!m_wndMenuBar.Create(this))
 	{
 		TRACE0("未能创建菜单栏\n");
@@ -231,6 +234,13 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	// 将改进任务栏的可用性,因为显示的文档名带有缩略图。
 	ModifyStyle(0, FWS_PREFIXTITLE);
 
+
+#if 1
+	m_ChildFrameList.SetDoc(m_pDoc);
+	m_ChildFrameList.AppendView(_T("品牌"), RUNTIME_CLASS(CFormViewBrand), IDR_MAINFRAME, IDD_FORMVIEW_BRAND);
+	m_ChildFrameList.AppendView(_T("季度"), RUNTIME_CLASS(CFormViewQuater), IDR_MAINFRAME, IDD_FORMVIEW_QUATER);
+#endif
+
 	return 0;
 }
 

+ 5 - 0
CTSManager/CTSManager/MainFrm.h

@@ -10,7 +10,9 @@
 #include "OutputWnd.h"
 #include "PropertiesWnd.h"
 #include "CalendarBar.h"
+#include "ChildFrameList.h"
 #include "Resource.h"
+#include "CTSManagerDoc.h"
 
 class COutlookBar : public CMFCOutlookBar
 {
@@ -42,6 +44,7 @@ public:
 	virtual void AssertValid() const;
 	virtual void Dump(CDumpContext& dc) const;
 #endif
+	CCTSManagerDoc* m_pDoc;
 
 protected:  // 控件条嵌入成员
 	CMFCMenuBar       m_wndMenuBar;
@@ -67,6 +70,8 @@ protected:  // 控件条嵌入成员
 	CMFCShellTreeCtrl m_wndTree;
 	CCalendarBar      m_wndCalendar;
 #endif
+	CChildFrameList   m_ChildFrameList;
+
 // 生成的消息映射函数
 protected:
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

+ 6 - 1
CTSManager/CTSManager/NavListCtrl.cpp

@@ -442,7 +442,12 @@ void CNavListCtrl::OnPaint()
 	memdc.FillSolidRect(rcClient, RGB(255, 255, 255));
 	CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC, 0);
 
-	dc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &memdc,
+	dc.BitBlt(
+		rcClient.left, 
+		rcClient.top, 
+		rcClient.Width(), 
+		rcClient.Height(), 
+		&memdc,
 		0, 0, SRCCOPY);
 }
 

+ 105 - 102
CTSManager/CTSManager/Resource.h

@@ -1,109 +1,112 @@
 //{{NO_DEPENDENCIES}}
-// 生成的 Microsoft Visual C++ 包含文件。
-//  CTSManager.rc 使用
+// Microsoft Visual C++ 生成的包含文件。
+//  CTSManager.rc 使用
 //
-#define IDD_ABOUTBOX				100
-#define IDP_OLE_INIT_FAILED			100
-#define IDR_POPUP_EDIT				119
-#define ID_STATUSBAR_PANE1			120
-#define ID_STATUSBAR_PANE2			121
-#define IDS_STATUS_PANE1			122
-#define IDS_STATUS_PANE2			123
-#define IDS_TOOLBAR_STANDARD		124
-#define IDS_TOOLBAR_CUSTOMIZE		125
-#define ID_VIEW_CUSTOMIZE			126
-#define IDR_MAINFRAME				128
-#define IDR_MAINFRAME_256			129
-#define IDR_CTSManagerTYPE				130
-#define ID_WINDOW_MANAGER			131
-#define ID_VIEW_FILEVIEW			133
-#define ID_VIEW_CLASSVIEW			134
-#define ID_PROPERTIES				135
-#define ID_OPEN						136
-#define ID_OPEN_WITH				137
-#define ID_DUMMY_COMPILE			138
-#define ID_CLASS_ADD_MEMBER_FUNCTION	139
-#define ID_CLASS_ADD_MEMBER_VARIABLE	140
-#define ID_CLASS_DEFINITION			141
-#define ID_CLASS_PROPERTIES			142
-#define ID_NEW_FOLDER				143
-#define ID_SORT_MENU				144
-#define ID_SORTING_GROUPBYTYPE		145
-#define ID_SORTING_SORTALPHABETIC	146
-#define ID_SORTING_SORTBYTYPE		147
-#define ID_SORTING_SORTBYACCESS		148
-#define ID_VIEW_OUTPUTWND			149
-#define ID_VIEW_PROPERTIESWND		150
-#define ID_SORTPROPERTIES			151
-#define ID_PROPERTIES1				152
-#define ID_PROPERTIES2				153
-#define ID_EXPAND_ALL				154
-#define IDS_FILE_VIEW				155
-#define IDS_CLASS_VIEW				156
-#define IDS_OUTPUT_WND				157
-#define IDS_PROPERTIES_WND			158
-#define IDI_FILE_VIEW				161
-#define IDI_FILE_VIEW_HC			162
-#define IDI_CLASS_VIEW				163
-#define IDI_CLASS_VIEW_HC			164
-#define IDI_OUTPUT_WND				165
-#define IDI_OUTPUT_WND_HC			166
-#define IDI_PROPERTIES_WND			167
-#define IDI_PROPERTIES_WND_HC		168
-#define IDR_EXPLORER				169
-#define IDB_EXPLORER_24				170
-#define IDR_SORT					171
-#define IDB_SORT_24					172
-#define IDR_POPUP_SORT				173
-#define IDR_POPUP_EXPLORER			174
-#define IDB_FILE_VIEW				175
-#define IDB_FILE_VIEW_24			176
-#define IDB_CLASS_VIEW				177
-#define IDB_CLASS_VIEW_24			178
-#define IDR_MENU_IMAGES				179
-#define IDB_MENU_IMAGES_24			180
-#define ID_TOOLS_MACRO				181
-#define IDR_OUTPUT_POPUP			182
-#define IDR_PROPERTIES				183
-#define IDB_PROPERTIES_HC			184
-#define ID_VIEW_NAVIGATION			185
-#define IDB_NAVIGATION_LARGE		186
-#define IDB_NAVIGATION_LARGE_HC		187
-#define IDB_PAGES					188
-#define IDB_PAGES_HC				189
-#define IDB_PAGES_SMALL				190
-#define IDB_PAGES_SMALL_HC			191
-#define IDR_THEME_MENU				200
-#define ID_SET_STYLE				201
-#define ID_VIEW_APPLOOK_WIN_2000	205
-#define ID_VIEW_APPLOOK_OFF_XP		206
-#define ID_VIEW_APPLOOK_WIN_XP		207
-#define ID_VIEW_APPLOOK_OFF_2003	208
-#define ID_VIEW_APPLOOK_VS_2005		209
-#define ID_VIEW_APPLOOK_VS_2008		210
-#define ID_VIEW_APPLOOK_OFF_2007_BLUE	215
-#define ID_VIEW_APPLOOK_OFF_2007_BLACK	216
-#define ID_VIEW_APPLOOK_OFF_2007_SILVER	217
-#define ID_VIEW_APPLOOK_OFF_2007_AQUA	218
-#define ID_VIEW_APPLOOK_WINDOWS_7	219
-#define IDS_MYCALENDARS				250
-#define IDS_CALENDAR				251
-#define IDS_SHORTCUTS				252
-#define IDS_FOLDERS					253
-#define IDS_OUTLOOKBAR				258
-#define IDS_BUILD_TAB				300
-#define IDS_DEBUG_TAB				301
-#define IDS_FIND_TAB				302
-#define IDS_EXPLORER				305
-#define IDS_EDIT_MENU				306
+#define IDD_ABOUTBOX                    100
+#define IDP_OLE_INIT_FAILED             100
+#define IDD_FORMVIEW_QUATER             101
+#define IDD_FORMVIEW_QUATER1            102
+#define IDD_FORMVIEW_BRAND              102
+#define IDR_POPUP_EDIT                  119
+#define ID_STATUSBAR_PANE1              120
+#define ID_STATUSBAR_PANE2              121
+#define IDS_STATUS_PANE1                122
+#define IDS_STATUS_PANE2                123
+#define IDS_TOOLBAR_STANDARD            124
+#define IDS_TOOLBAR_CUSTOMIZE           125
+#define ID_VIEW_CUSTOMIZE               126
+#define IDR_MAINFRAME                   128
+#define IDR_MAINFRAME_256               129
+#define IDR_CTSManagerTYPE              130
+#define ID_WINDOW_MANAGER               131
+#define ID_VIEW_FILEVIEW                133
+#define ID_VIEW_CLASSVIEW               134
+#define ID_PROPERTIES                   135
+#define ID_OPEN                         136
+#define ID_OPEN_WITH                    137
+#define ID_DUMMY_COMPILE                138
+#define ID_CLASS_ADD_MEMBER_FUNCTION    139
+#define ID_CLASS_ADD_MEMBER_VARIABLE    140
+#define ID_CLASS_DEFINITION             141
+#define ID_CLASS_PROPERTIES             142
+#define ID_NEW_FOLDER                   143
+#define ID_SORT_MENU                    144
+#define ID_SORTING_GROUPBYTYPE          145
+#define ID_SORTING_SORTALPHABETIC       146
+#define ID_SORTING_SORTBYTYPE           147
+#define ID_SORTING_SORTBYACCESS         148
+#define ID_VIEW_OUTPUTWND               149
+#define ID_VIEW_PROPERTIESWND           150
+#define ID_SORTPROPERTIES               151
+#define ID_PROPERTIES1                  152
+#define ID_PROPERTIES2                  153
+#define ID_EXPAND_ALL                   154
+#define IDS_FILE_VIEW                   155
+#define IDS_CLASS_VIEW                  156
+#define IDS_OUTPUT_WND                  157
+#define IDS_PROPERTIES_WND              158
+#define IDI_FILE_VIEW                   161
+#define IDI_FILE_VIEW_HC                162
+#define IDI_CLASS_VIEW                  163
+#define IDI_CLASS_VIEW_HC               164
+#define IDI_OUTPUT_WND                  165
+#define IDI_OUTPUT_WND_HC               166
+#define IDI_PROPERTIES_WND              167
+#define IDI_PROPERTIES_WND_HC           168
+#define IDR_EXPLORER                    169
+#define IDB_EXPLORER_24                 170
+#define IDR_SORT                        171
+#define IDB_SORT_24                     172
+#define IDR_POPUP_SORT                  173
+#define IDR_POPUP_EXPLORER              174
+#define IDB_FILE_VIEW                   175
+#define IDB_FILE_VIEW_24                176
+#define IDB_CLASS_VIEW                  177
+#define IDB_CLASS_VIEW_24               178
+#define IDR_MENU_IMAGES                 179
+#define IDB_MENU_IMAGES_24              180
+#define ID_TOOLS_MACRO                  181
+#define IDR_OUTPUT_POPUP                182
+#define IDR_PROPERTIES                  183
+#define IDB_PROPERTIES_HC               184
+#define ID_VIEW_NAVIGATION              185
+#define IDB_NAVIGATION_LARGE            186
+#define IDB_NAVIGATION_LARGE_HC         187
+#define IDB_PAGES                       188
+#define IDB_PAGES_HC                    189
+#define IDB_PAGES_SMALL                 190
+#define IDB_PAGES_SMALL_HC              191
+#define IDR_THEME_MENU                  200
+#define ID_SET_STYLE                    201
+#define ID_VIEW_APPLOOK_WIN_2000        205
+#define ID_VIEW_APPLOOK_OFF_XP          206
+#define ID_VIEW_APPLOOK_WIN_XP          207
+#define ID_VIEW_APPLOOK_OFF_2003        208
+#define ID_VIEW_APPLOOK_VS_2005         209
+#define ID_VIEW_APPLOOK_VS_2008         210
+#define ID_VIEW_APPLOOK_OFF_2007_BLUE   215
+#define ID_VIEW_APPLOOK_OFF_2007_BLACK  216
+#define ID_VIEW_APPLOOK_OFF_2007_SILVER 217
+#define ID_VIEW_APPLOOK_OFF_2007_AQUA   218
+#define ID_VIEW_APPLOOK_WINDOWS_7       219
+#define IDS_MYCALENDARS                 250
+#define IDS_CALENDAR                    251
+#define IDS_SHORTCUTS                   252
+#define IDS_FOLDERS                     253
+#define IDS_OUTLOOKBAR                  258
+#define IDS_BUILD_TAB                   300
+#define IDS_DEBUG_TAB                   301
+#define IDS_FIND_TAB                    302
+#define IDS_EXPLORER                    305
+#define IDS_EDIT_MENU                   306
 
-// 新对象的下一组默认值
-//
+// Next default values for new objects
+// 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE	310
-#define _APS_NEXT_CONTROL_VALUE		1000
-#define _APS_NEXT_SYMED_VALUE		310
-#define _APS_NEXT_COMMAND_VALUE		32771
+#define _APS_NEXT_RESOURCE_VALUE        311
+#define _APS_NEXT_COMMAND_VALUE         32771
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           310
 #endif
 #endif

+ 1 - 1
CTSManager/CTSManager/pch.h

@@ -19,7 +19,7 @@
 // 弃用函数;
 #define DEPRECATED 0
 // 隐藏菜单栏;
-#define HIDE_MENU_BAR 0
+#define HIDE_MENU_BAR 1
 // 启用显示文件/类;
 #define ENABLE_FILE_CLASS 0
 // 启用输出;