ソースを参照

工程重新创建:使用VS2019创建
原因:因为使用VS2008创建的工程,在拖动属性栏时会花边;

sat23 4 年 前
コミット
061c99e8a0
47 ファイル変更1213 行追加1130 行削除
  1. 20 9
      CTSManager/CTSManager.sln
  2. 118 85
      CTSManager/CTSManager/CTSManager.cpp
  3. 9 8
      CTSManager/CTSManager/CTSManager.h
  4. BIN
      CTSManager/CTSManager/CTSManager.rc
  5. 0 466
      CTSManager/CTSManager/CTSManager.vcproj
  6. 273 0
      CTSManager/CTSManager/CTSManager.vcxproj
  7. 207 0
      CTSManager/CTSManager/CTSManager.vcxproj.filters
  8. 73 14
      CTSManager/CTSManager/CTSManagerDoc.cpp
  9. 18 11
      CTSManager/CTSManager/CTSManagerDoc.h
  10. 31 20
      CTSManager/CTSManager/CTSManagerView.cpp
  11. 11 12
      CTSManager/CTSManager/CTSManagerView.h
  12. 27 8
      CTSManager/CTSManager/CalendarBar.cpp
  13. 8 6
      CTSManager/CTSManager/CalendarBar.h
  14. 13 9
      CTSManager/CTSManager/ChildFrm.cpp
  15. 11 8
      CTSManager/CTSManager/ChildFrm.h
  16. 30 29
      CTSManager/CTSManager/ClassView.cpp
  17. 3 3
      CTSManager/CTSManager/ClassView.h
  18. 33 32
      CTSManager/CTSManager/FileView.cpp
  19. 5 5
      CTSManager/CTSManager/FileView.h
  20. 96 76
      CTSManager/CTSManager/MainFrm.cpp
  21. 12 11
      CTSManager/CTSManager/MainFrm.h
  22. 38 36
      CTSManager/CTSManager/OutputWnd.cpp
  23. 11 11
      CTSManager/CTSManager/OutputWnd.h
  24. 61 57
      CTSManager/CTSManager/PropertiesWnd.cpp
  25. 7 5
      CTSManager/CTSManager/PropertiesWnd.h
  26. 0 96
      CTSManager/CTSManager/ReadMe.txt
  27. 11 10
      CTSManager/CTSManager/Resource.h
  28. 7 6
      CTSManager/CTSManager/ViewTree.cpp
  29. 6 6
      CTSManager/CTSManager/ViewTree.h
  30. 49 0
      CTSManager/CTSManager/framework.h
  31. 5 0
      CTSManager/CTSManager/pch.cpp
  32. 15 0
      CTSManager/CTSManager/pch.h
  33. BIN
      CTSManager/CTSManager/res/CTSManager.rc2
  34. BIN
      CTSManager/CTSManager/res/explorer.bmp
  35. BIN
      CTSManager/CTSManager/res/explorer_hc.bmp
  36. BIN
      CTSManager/CTSManager/res/menuimages.bmp
  37. BIN
      CTSManager/CTSManager/res/menuimages_hc.bmp
  38. BIN
      CTSManager/CTSManager/res/properties.bmp
  39. BIN
      CTSManager/CTSManager/res/properties_hc.bmp
  40. BIN
      CTSManager/CTSManager/res/properties_wnd.ico
  41. BIN
      CTSManager/CTSManager/res/properties_wnd_hc.ico
  42. BIN
      CTSManager/CTSManager/res/sort.bmp
  43. BIN
      CTSManager/CTSManager/res/sort_hc.bmp
  44. 0 0
      CTSManager/CTSManager/res/userimages.bmp
  45. 0 8
      CTSManager/CTSManager/stdafx.cpp
  46. 0 60
      CTSManager/CTSManager/stdafx.h
  47. 5 23
      CTSManager/CTSManager/targetver.h

+ 20 - 9
CTSManager/CTSManager.sln

@@ -1,20 +1,31 @@
 
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CTSManager", "CTSManager\CTSManager.vcproj", "{2FFA36D8-11C9-461C-99F5-AFD504C18A24}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30413.136
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CTSManager", "CTSManager\CTSManager.vcxproj", "{B375E784-6B3E-4D40-AD94-3AC859B49CAA}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{2FFA36D8-11C9-461C-99F5-AFD504C18A24}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2FFA36D8-11C9-461C-99F5-AFD504C18A24}.Debug|Win32.Build.0 = Debug|Win32
-		{2FFA36D8-11C9-461C-99F5-AFD504C18A24}.Release|Win32.ActiveCfg = Release|Win32
-		{2FFA36D8-11C9-461C-99F5-AFD504C18A24}.Release|Win32.Build.0 = Release|Win32
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Debug|x64.ActiveCfg = Debug|x64
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Debug|x64.Build.0 = Debug|x64
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Debug|x86.ActiveCfg = Debug|Win32
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Debug|x86.Build.0 = Debug|Win32
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Release|x64.ActiveCfg = Release|x64
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Release|x64.Build.0 = Release|x64
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Release|x86.ActiveCfg = Release|Win32
+		{B375E784-6B3E-4D40-AD94-3AC859B49CAA}.Release|x86.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {E39747A5-ECA3-4C78-A11F-8D28138A8BFD}
+	EndGlobalSection
 EndGlobal

+ 118 - 85
CTSManager/CTSManager/CTSManager.cpp

@@ -1,9 +1,11 @@
-
-// CTSManager.cpp : 定义应用程序的类行为。
+锘�
+// CTSManager.cpp: 瀹氫箟搴旂敤绋嬪簭鐨勭被琛屼负銆�
 //
 
-#include "stdafx.h"
+#include "pch.h"
+#include "framework.h"
 #include "afxwinappex.h"
+#include "afxdialogex.h"
 #include "CTSManager.h"
 #include "MainFrm.h"
 
@@ -23,131 +25,152 @@
 
 BEGIN_MESSAGE_MAP(CCTSManagerApp, CWinAppEx)
 	ON_COMMAND(ID_APP_ABOUT, &CCTSManagerApp::OnAppAbout)
-	// 基于文件的标准文档命令
+	// 鍩轰簬鏂囦欢鐨勬爣鍑嗘枃妗e懡浠�
 	ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)
 	ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)
-	// 标准打印设置命令
+	// 鏍囧噯鎵撳嵃璁剧疆鍛戒护
 	ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)
 END_MESSAGE_MAP()
 
 
-// CCTSManagerApp 构造
+// CCTSManagerApp 鏋勯€�
 
-CCTSManagerApp::CCTSManagerApp()
+CCTSManagerApp::CCTSManagerApp() noexcept
 {
-
 	m_bHiColorIcons = TRUE;
 
-	// TODO: 在此处添加构造代码,
-	// 将所有重要的初始化放置在 InitInstance 中
+	// 鏀�寔閲嶆柊鍚�姩绠$悊鍣�
+	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
+#ifdef _MANAGED
+	// 濡傛灉搴旂敤绋嬪簭鏄�埄鐢ㄥ叕鍏辫�瑷€杩愯�鏃舵敮鎸�(/clr)鏋勫缓鐨勶紝鍒�: 
+	//     1) 蹇呴』鏈夋�闄勫姞璁剧疆锛屸€滈噸鏂板惎鍔ㄧ�鐞嗗櫒鈥濇敮鎸佹墠鑳芥�甯稿伐浣溿€�
+	//     2) 鍦ㄦ偍鐨勯」鐩�腑锛屾偍蹇呴』鎸夌収鐢熸垚椤哄簭鍚� System.Windows.Forms 娣诲姞寮曠敤銆�
+	System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);
+#endif
+
+	// TODO: 灏嗕互涓嬪簲鐢ㄧ▼搴� ID 瀛楃�涓叉浛鎹�负鍞�竴鐨� ID 瀛楃�涓诧紱寤鸿�鐨勫瓧绗︿覆鏍煎紡
+	//涓� CompanyName.ProductName.SubProduct.VersionInformation
+	SetAppID(_T("CTSManager.AppID.NoVersion"));
+
+	// TODO:  鍦ㄦ�澶勬坊鍔犳瀯閫犱唬鐮侊紝
+	// 灏嗘墍鏈夐噸瑕佺殑鍒濆�鍖栨斁缃�湪 InitInstance 涓�
 }
 
-// 唯一的一个 CCTSManagerApp 对象
+// 鍞�竴鐨� CCTSManagerApp 瀵硅薄
 
 CCTSManagerApp theApp;
 
 
-// CCTSManagerApp 初始化
+// CCTSManagerApp 鍒濆�鍖�
 
 BOOL CCTSManagerApp::InitInstance()
 {
-	// 如果一个运行在 Windows XP 上的应用程序清单指定要
-	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
-	//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
+	// 濡傛灉涓€涓�繍琛屽湪 Windows XP 涓婄殑搴旂敤绋嬪簭娓呭崟鎸囧畾瑕�
+	// 浣跨敤 ComCtl32.dll 鐗堟湰 6 鎴栨洿楂樼増鏈�潵鍚�敤鍙��鍖栨柟寮忥紝
+	//鍒欓渶瑕� InitCommonControlsEx()銆�  鍚﹀垯锛屽皢鏃犳硶鍒涘缓绐楀彛銆�
 	INITCOMMONCONTROLSEX InitCtrls;
 	InitCtrls.dwSize = sizeof(InitCtrls);
-	// 将它设置为包括所有要在应用程序中使用的
-	// 公共控件类。
+	// 灏嗗畠璁剧疆涓哄寘鎷�墍鏈夎�鍦ㄥ簲鐢ㄧ▼搴忎腑浣跨敤鐨�
+	// 鍏�叡鎺т欢绫汇€�
 	InitCtrls.dwICC = ICC_WIN95_CLASSES;
 	InitCommonControlsEx(&InitCtrls);
 
 	CWinAppEx::InitInstance();
 
-	// 初始化 OLE 库
-	if (!AfxOleInit())
-	{
-		AfxMessageBox(IDP_OLE_INIT_FAILED);
-		return FALSE;
-	}
-	AfxEnableControlContainer();
-	// 标准初始化
-	// 如果未使用这些功能并希望减小
-	// 最终可执行文件的大小,则应移除下列
-	// 不需要的特定初始化例程
-	// 更改用于存储设置的注册表项
-	// TODO: 应适当修改该字符串,
-	// 例如修改为公司或组织名
-	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
-	LoadStdProfileSettings(4);  // 加载标准 INI 文件选项(包括 MRU)
-
-	InitContextMenuManager();
-	InitShellManager();
-
-	InitKeyboardManager();
-
-	InitTooltipManager();
-	CMFCToolTipInfo ttParams;
-	ttParams.m_bVislManagerTheme = TRUE;
-	theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,
-		RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);
 
 #if 1
-	// 如果要多线程使用,必须在线程开始处调用;
+	// 濡傛灉瑕佸�绾跨▼浣跨敤,蹇呴』鍦ㄧ嚎绋嬪紑濮嬪�璋冪敤;
 	mysql_thread_init();
-	// 创建mysql对象;
-	MYSQL *pConn = mysql_init(NULL); // 会调用mysql_library_init;
+	// 鍒涘缓mysql瀵硅薄;
+	MYSQL* pConn = mysql_init(NULL); // 浼氳皟鐢╩ysql_library_init;
 	const char* perr = mysql_error(pConn);
-	if ( pConn ) {
-		// 创建连接;
-		if ( mysql_real_connect(pConn, _STR_HOST_, _STR_USER_, _STR_PASSWD_, _STR_DBNAME_, 0, NULL, 0)) {
-			// 查询数据库的表;
-			if ( mysql_query(pConn, "show tables;"))
+	if (pConn) {
+		// 鍒涘缓杩炴帴;
+		if (mysql_real_connect(pConn, _STR_HOST_, _STR_USER_, _STR_PASSWD_, _STR_DBNAME_, 0, NULL, 0)) {
+			// 鏌ヨ�鏁版嵁搴撶殑琛�;
+			if (mysql_query(pConn, "show tables;"))
 			{
 				return FALSE;
 			}
 
-			// 获取数据;
-			MYSQL_RES *pres = mysql_store_result(pConn);
-			if ( pres != NULL ) {
+			// 鑾峰彇鏁版嵁;
+			MYSQL_RES* pres = mysql_store_result(pConn);
+			if (pres != NULL) {
 				MYSQL_ROW row;
 				unsigned int rlen = mysql_num_fields(pres);
 
-				// 打印行数据;
-				while ( (row = mysql_fetch_row(pres)) ) {
-					for ( unsigned int i = 0; i < rlen; i++ ) {
+				// 鎵撳嵃琛屾暟鎹�;
+				while ((row = mysql_fetch_row(pres))) {
+					for (unsigned int i = 0; i < rlen; i++) {
 						//TRACE0("%s\n", row[i]);
 						OutputDebugString(row[i]);
 						OutputDebugString("\n");
 					}
 				}
-				// 释放结果内存;
+				// 閲婃斁缁撴灉鍐呭瓨;
 				mysql_free_result(pres);
 			}
 		}
-		
-		// 释放连接对象;
+
+		// 閲婃斁杩炴帴瀵硅薄;
 		mysql_close(pConn);
 	}
 
-	// 对应mysql_thread_init,在线程结束时调用;
+	// 瀵瑰簲mysql_thread_init,鍦ㄧ嚎绋嬬粨鏉熸椂璋冪敤;
 	mysql_thread_end();
 
-	// 释放mysql库;
+	// 閲婃斁mysql搴�;
 	mysql_library_end();
 #endif
 
-	// 注册应用程序的文档模板。文档模板
-	// 将用作文档、框架窗口和视图之间的连接
+	// 鍒濆�鍖� OLE 搴�
+	if (!AfxOleInit())
+	{
+		AfxMessageBox(IDP_OLE_INIT_FAILED);
+		return FALSE;
+	}
+
+	AfxEnableControlContainer();
+
+	EnableTaskbarInteraction();
+
+	// 浣跨敤 RichEdit 鎺т欢闇€瑕� AfxInitRichEdit2()
+	// AfxInitRichEdit2();
+
+	// 鏍囧噯鍒濆�鍖�
+	// 濡傛灉鏈�娇鐢ㄨ繖浜涘姛鑳藉苟甯屾湜鍑忓皬
+	// 鏈€缁堝彲鎵ц�鏂囦欢鐨勫ぇ灏忥紝鍒欏簲绉婚櫎涓嬪垪
+	// 涓嶉渶瑕佺殑鐗瑰畾鍒濆�鍖栦緥绋�
+	// 鏇存敼鐢ㄤ簬瀛樺偍璁剧疆鐨勬敞鍐岃〃椤�
+	// TODO: 搴旈€傚綋淇�敼璇ュ瓧绗︿覆锛�
+	// 渚嬪�淇�敼涓哄叕鍙告垨缁勭粐鍚�
+	SetRegistryKey(_T("搴旂敤绋嬪簭鍚戝�鐢熸垚鐨勬湰鍦板簲鐢ㄧ▼搴�"));
+	LoadStdProfileSettings(4);  // 鍔犺浇鏍囧噯 INI 鏂囦欢閫夐」(鍖呮嫭 MRU)
+
+
+	InitContextMenuManager();
+	InitShellManager();
+
+	InitKeyboardManager();
+
+	InitTooltipManager();
+	CMFCToolTipInfo ttParams;
+	ttParams.m_bVislManagerTheme = TRUE;
+	theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,
+		RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);
+
+	// 娉ㄥ唽搴旂敤绋嬪簭鐨勬枃妗fā鏉裤€�  鏂囨。妯℃澘
+	// 灏嗙敤浣滄枃妗c€佹�鏋剁獥鍙e拰瑙嗗浘涔嬮棿鐨勮繛鎺�
 	CMultiDocTemplate* pDocTemplate;
 	pDocTemplate = new CMultiDocTemplate(IDR_CTSManagerTYPE,
 		RUNTIME_CLASS(CCTSManagerDoc),
-		RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
+		RUNTIME_CLASS(CChildFrame), // 鑷�畾涔� MDI 瀛愭�鏋�
 		RUNTIME_CLASS(CCTSManagerView));
 	if (!pDocTemplate)
 		return FALSE;
 	AddDocTemplate(pDocTemplate);
 
-	// 创建主 MDI 框架窗口
+	// 鍒涘缓涓� MDI 妗嗘灦绐楀彛
 	CMainFrame* pMainFrame = new CMainFrame;
 	if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
 	{
@@ -155,66 +178,76 @@ BOOL CCTSManagerApp::InitInstance()
 		return FALSE;
 	}
 	m_pMainWnd = pMainFrame;
-	// 仅当具有后缀时才调用 DragAcceptFiles
-	//  在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生
 
 
-	// 分析标准外壳命令、DDE、打开文件操作的命令行
+	// 鍒嗘瀽鏍囧噯 shell 鍛戒护銆丏DE銆佹墦寮€鏂囦欢鎿嶄綔鐨勫懡浠よ�
 	CCommandLineInfo cmdInfo;
 	ParseCommandLine(cmdInfo);
 
 
-	// 调度在命令行中指定的命令。如果
-	// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
+
+	// 璋冨害鍦ㄥ懡浠よ�涓�寚瀹氱殑鍛戒护銆�  濡傛灉
+	// 鐢� /RegServer銆�/Register銆�/Unregserver 鎴� /Unregister 鍚�姩搴旂敤绋嬪簭锛屽垯杩斿洖 FALSE銆�
 	if (!ProcessShellCommand(cmdInfo))
 		return FALSE;
-	// 主窗口已初始化,因此显示它并对其进行更新
+	// 涓荤獥鍙e凡鍒濆�鍖栵紝鍥犳�鏄剧ず瀹冨苟瀵瑰叾杩涜�鏇存柊
 	pMainFrame->ShowWindow(m_nCmdShow);
 	pMainFrame->UpdateWindow();
 
 	return TRUE;
 }
 
+int CCTSManagerApp::ExitInstance()
+{
+	//TODO: 澶勭悊鍙�兘宸叉坊鍔犵殑闄勫姞璧勬簮
+	AfxOleTerm(FALSE);
+
+	return CWinAppEx::ExitInstance();
+}
+
+// CCTSManagerApp 娑堟伅澶勭悊绋嬪簭
 
 
-// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
+// 鐢ㄤ簬搴旂敤绋嬪簭鈥滃叧浜庘€濊彍鍗曢」鐨� CAboutDlg 瀵硅瘽妗�
 
-class CAboutDlg : public CDialog
+class CAboutDlg : public CDialogEx
 {
 public:
-	CAboutDlg();
+	CAboutDlg() noexcept;
 
-// 对话框数据
+// 瀵硅瘽妗嗘暟鎹�
+#ifdef AFX_DESIGN_TIME
 	enum { IDD = IDD_ABOUTBOX };
+#endif
 
 protected:
-	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 鏀�寔
 
-// 实现
+// 瀹炵幇
 protected:
 	DECLARE_MESSAGE_MAP()
 };
 
-CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+CAboutDlg::CAboutDlg() noexcept : CDialogEx(IDD_ABOUTBOX)
 {
 }
 
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
 {
-	CDialog::DoDataExchange(pDX);
+	CDialogEx::DoDataExchange(pDX);
 }
 
-BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
 END_MESSAGE_MAP()
 
-// 用于运行对话框的应用程序命令
+// 鐢ㄤ簬杩愯�瀵硅瘽妗嗙殑搴旂敤绋嬪簭鍛戒护
 void CCTSManagerApp::OnAppAbout()
 {
 	CAboutDlg aboutDlg;
 	aboutDlg.DoModal();
 }
 
-// CCTSManagerApp 自定义加载/保存方法
+// CCTSManagerApp 鑷�畾涔夊姞杞�/淇濆瓨鏂规硶
 
 void CCTSManagerApp::PreLoadState()
 {
@@ -236,7 +269,7 @@ void CCTSManagerApp::SaveCustomState()
 {
 }
 
-// CCTSManagerApp 消息处理程序
+// CCTSManagerApp 娑堟伅澶勭悊绋嬪簭
 
 
 

+ 9 - 8
CTSManager/CTSManager/CTSManager.h

@@ -1,30 +1,31 @@
-
-// CTSManager.h : CTSManager 应用程序的主头文件
+锘�
+// CTSManager.h: CTSManager 搴旂敤绋嬪簭鐨勪富澶存枃浠�
 //
 #pragma once
 
 #ifndef __AFXWIN_H__
-	#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
+	#error "鍦ㄥ寘鍚��鏂囦欢涔嬪墠鍖呭惈 'pch.h' 浠ョ敓鎴� PCH"
 #endif
 
-#include "resource.h"       // 主符号
+#include "resource.h"       // 涓荤�鍙�
 
 
 // CCTSManagerApp:
-// 有关此类的实现,请参阅 CTSManager.cpp
+// 鏈夊叧姝ょ被鐨勫疄鐜帮紝璇峰弬闃� CTSManager.cpp
 //
 
 class CCTSManagerApp : public CWinAppEx
 {
 public:
-	CCTSManagerApp();
+	CCTSManagerApp() noexcept;
 
 
-// 重写
+// 閲嶅啓
 public:
 	virtual BOOL InitInstance();
+	virtual int ExitInstance();
 
-// 实现
+// 瀹炵幇
 	UINT  m_nAppLook;
 	BOOL  m_bHiColorIcons;
 

BIN
CTSManager/CTSManager/CTSManager.rc


+ 0 - 466
CTSManager/CTSManager/CTSManager.vcproj

@@ -1,466 +0,0 @@
-<?xml version="1.0" encoding="gb2312"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="CTSManager"
-	ProjectGUID="{2FFA36D8-11C9-461C-99F5-AFD504C18A24}"
-	RootNamespace="CTSManager"
-	Keyword="MFCProj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="..\..\..\bin\$(SolutionName)"
-			IntermediateDirectory="$(OutDir)\$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="false"
-				ValidateParameters="true"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\mysql-5.7.31\include"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="2"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="2052"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libmysql.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="..\mysql-5.7.31\lib"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="..\..\..\bin\$(SolutionName)"
-			IntermediateDirectory="$(OutDir)\$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="2"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="false"
-				ValidateParameters="true"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="..\mysql-5.7.31\include"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
-				MinimalRebuild="false"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="2"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="2052"
-				AdditionalIncludeDirectories="$(IntDir)"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libmysql.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="..\mysql-5.7.31\lib"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Ô´Îļþ"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\CalendarBar.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\ChildFrm.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\ClassView.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManager.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManagerDoc.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManagerView.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\FileView.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\MainFrm.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\OutputWnd.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\PropertiesWnd.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\stdafx.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\ViewTree.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Í·Îļþ"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\CalendarBar.h"
-				>
-			</File>
-			<File
-				RelativePath=".\ChildFrm.h"
-				>
-			</File>
-			<File
-				RelativePath=".\ClassView.h"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManager.h"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManagerDoc.h"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManagerView.h"
-				>
-			</File>
-			<File
-				RelativePath=".\FileView.h"
-				>
-			</File>
-			<File
-				RelativePath=".\MainFrm.h"
-				>
-			</File>
-			<File
-				RelativePath=".\OutputWnd.h"
-				>
-			</File>
-			<File
-				RelativePath=".\PropertiesWnd.h"
-				>
-			</File>
-			<File
-				RelativePath=".\Resource.h"
-				>
-			</File>
-			<File
-				RelativePath=".\stdafx.h"
-				>
-			</File>
-			<File
-				RelativePath=".\targetver.h"
-				>
-			</File>
-			<File
-				RelativePath=".\ViewTree.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="×ÊÔ´Îļþ"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\res\class_view.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\class_view_hc.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\classview.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\classview_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\CTSManager.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\CTSManager.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\res\CTSManager.rc2"
-				>
-			</File>
-			<File
-				RelativePath=".\res\CTSManagerDoc.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\explorer.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\explorer_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\file_view.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\file_view_hc.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\fileview.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\fileview_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\menuimages.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\menuimages_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\nav_large.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\nav_large_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\output_wnd.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\output_wnd_hc.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\pages.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\pages_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\pages_small.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\pages_small_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\properties.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\properties_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\properties_wnd.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\properties_wnd_hc.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\res\sort.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\sort_hc.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\Toolbar.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\res\Toolbar256.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\UserImages.bmp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\ReadMe.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

+ 273 - 0
CTSManager/CTSManager/CTSManager.vcxproj

@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <VCProjectVersion>16.0</VCProjectVersion>
+    <ProjectGuid>{B375E784-6B3E-4D40-AD94-3AC859B49CAA}</ProjectGuid>
+    <Keyword>MFCProj</Keyword>
+    <RootNamespace>CTSManager</RootNamespace>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v142</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseOfMfc>Dynamic</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="Shared">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>..\..\..\bin\$(SolutionName)\</OutDir>
+    <IntDir>$(OutDir)$(Configuration)</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>..\..\..\bin\$(SolutionName)\</OutDir>
+    <IntDir>$(OutDir)$(Configuration)</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\mysql-5.7.31\include</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <AdditionalLibraryDirectories>..\mysql-5.7.31\lib</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libmysql.lib</AdditionalDependencies>
+    </Link>
+    <Midl>
+      <MkTypLibCompatible>false</MkTypLibCompatible>
+      <ValidateAllParameters>true</ValidateAllParameters>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </Midl>
+    <ResourceCompile>
+      <Culture>0x0804</Culture>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+    </Link>
+    <Midl>
+      <MkTypLibCompatible>false</MkTypLibCompatible>
+      <ValidateAllParameters>true</ValidateAllParameters>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </Midl>
+    <ResourceCompile>
+      <Culture>0x0804</Culture>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <AdditionalIncludeDirectories>..\mysql-5.7.31\include</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>..\mysql-5.7.31\lib</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libmysql.lib</AdditionalDependencies>
+    </Link>
+    <Midl>
+      <MkTypLibCompatible>false</MkTypLibCompatible>
+      <ValidateAllParameters>true</ValidateAllParameters>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </Midl>
+    <ResourceCompile>
+      <Culture>0x0804</Culture>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+    <Midl>
+      <MkTypLibCompatible>false</MkTypLibCompatible>
+      <ValidateAllParameters>true</ValidateAllParameters>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </Midl>
+    <ResourceCompile>
+      <Culture>0x0804</Culture>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="calendarbar.h" />
+    <ClInclude Include="ChildFrm.h" />
+    <ClInclude Include="ClassView.h" />
+    <ClInclude Include="CTSManager.h" />
+    <ClInclude Include="CTSManagerDoc.h" />
+    <ClInclude Include="CTSManagerView.h" />
+    <ClInclude Include="FileView.h" />
+    <ClInclude Include="framework.h" />
+    <ClInclude Include="MainFrm.h" />
+    <ClInclude Include="OutputWnd.h" />
+    <ClInclude Include="pch.h" />
+    <ClInclude Include="PropertiesWnd.h" />
+    <ClInclude Include="Resource.h" />
+    <ClInclude Include="targetver.h" />
+    <ClInclude Include="ViewTree.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="calendarbar.cpp" />
+    <ClCompile Include="ChildFrm.cpp" />
+    <ClCompile Include="ClassView.cpp" />
+    <ClCompile Include="CTSManager.cpp" />
+    <ClCompile Include="CTSManagerDoc.cpp" />
+    <ClCompile Include="CTSManagerView.cpp" />
+    <ClCompile Include="FileView.cpp" />
+    <ClCompile Include="MainFrm.cpp" />
+    <ClCompile Include="OutputWnd.cpp" />
+    <ClCompile Include="pch.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="PropertiesWnd.cpp" />
+    <ClCompile Include="ViewTree.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="CTSManager.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="res\classview.bmp" />
+    <Image Include="res\classview_hc.bmp" />
+    <Image Include="res\class_view.ico" />
+    <Image Include="res\class_view_hc.ico" />
+    <Image Include="res\CTSManager.ico" />
+    <Image Include="res\CTSManagerDoc.ico" />
+    <Image Include="res\explorer.bmp" />
+    <Image Include="res\explorer_hc.bmp" />
+    <Image Include="res\fileview.bmp" />
+    <Image Include="res\fileview_hc.bmp" />
+    <Image Include="res\file_view.ico" />
+    <Image Include="res\file_view_hc.ico" />
+    <Image Include="res\menuimages.bmp" />
+    <Image Include="res\menuimages_hc.bmp" />
+    <Image Include="res\nav_large.bmp" />
+    <Image Include="res\nav_large_hc.bmp" />
+    <Image Include="res\output_wnd.ico" />
+    <Image Include="res\output_wnd_hc.ico" />
+    <Image Include="res\pages.bmp" />
+    <Image Include="res\pages_hc.bmp" />
+    <Image Include="res\pages_small.bmp" />
+    <Image Include="res\pages_small_hc.bmp" />
+    <Image Include="res\properties.bmp" />
+    <Image Include="res\properties_hc.bmp" />
+    <Image Include="res\properties_wnd.ico" />
+    <Image Include="res\properties_wnd_hc.ico" />
+    <Image Include="res\sort.bmp" />
+    <Image Include="res\sort_hc.bmp" />
+    <Image Include="res\Toolbar.bmp" />
+    <Image Include="res\Toolbar256.bmp" />
+    <Image Include="res\userimages.bmp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="res\CTSManager.rc2" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

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

@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="源文件">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="头文件">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
+    </Filter>
+    <Filter Include="资源文件">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="CTSManager.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="framework.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="targetver.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="MainFrm.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="ChildFrm.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="CTSManagerDoc.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="CTSManagerView.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="Resource.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="FileView.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="ClassView.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="ViewTree.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="OutputWnd.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="PropertiesWnd.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="calendarbar.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="pch.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="CTSManager.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="MainFrm.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="ChildFrm.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="CTSManagerDoc.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="CTSManagerView.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="FileView.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="ClassView.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="ViewTree.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="OutputWnd.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="PropertiesWnd.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="calendarbar.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="pch.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="CTSManager.rc">
+      <Filter>资源文件</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="res\file_view.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\file_view_hc.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\class_view.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\class_view_hc.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\fileview.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\fileview_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\classview.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\classview_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\explorer.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\explorer_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\sort.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\sort_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\menuimages.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\menuimages_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\output_wnd.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\output_wnd_hc.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\properties_wnd.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\properties_wnd_hc.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\properties.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\properties_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\nav_large.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\nav_large_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\pages.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\pages_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\pages_small.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\pages_small_hc.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\userimages.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\CTSManagerDoc.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\CTSManager.ico">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\Toolbar.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+    <Image Include="res\Toolbar256.bmp">
+      <Filter>资源文件</Filter>
+    </Image>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="res\CTSManager.rc2">
+      <Filter>资源文件</Filter>
+    </None>
+  </ItemGroup>
+</Project>

+ 73 - 14
CTSManager/CTSManager/CTSManagerDoc.cpp

@@ -1,17 +1,23 @@
-
-// CTSManagerDoc.cpp : CCTSManagerDoc 类的实现
+锘�
+// CTSManagerDoc.cpp: CCTSManagerDoc 绫荤殑瀹炵幇
 //
 
-#include "stdafx.h"
+#include "pch.h"
+#include "framework.h"
+// SHARED_HANDLERS 鍙�互鍦ㄥ疄鐜伴�瑙堛€佺缉鐣ュ浘鍜屾悳绱㈢瓫閫夊櫒鍙ユ焺鐨�
+// ATL 椤圭洰涓�繘琛屽畾涔夛紝骞跺厑璁镐笌璇ラ」鐩�叡浜�枃妗d唬鐮併€�
+#ifndef SHARED_HANDLERS
 #include "CTSManager.h"
+#endif
 
 #include "CTSManagerDoc.h"
 
+#include <propkey.h>
+
 #ifdef _DEBUG
 #define new DEBUG_NEW
 #endif
 
-
 // CCTSManagerDoc
 
 IMPLEMENT_DYNCREATE(CCTSManagerDoc, CDocument)
@@ -20,11 +26,11 @@ BEGIN_MESSAGE_MAP(CCTSManagerDoc, CDocument)
 END_MESSAGE_MAP()
 
 
-// CCTSManagerDoc 构造/析构
+// CCTSManagerDoc 鏋勯€�/鏋愭瀯
 
-CCTSManagerDoc::CCTSManagerDoc()
+CCTSManagerDoc::CCTSManagerDoc() noexcept
 {
-	// TODO: 在此添加一次性构造代码
+	// TODO: 鍦ㄦ�娣诲姞涓€娆℃€ф瀯閫犱唬鐮�
 
 }
 
@@ -37,8 +43,8 @@ BOOL CCTSManagerDoc::OnNewDocument()
 	if (!CDocument::OnNewDocument())
 		return FALSE;
 
-	// TODO: 在此添加重新初始化代码
-	// (SDI 文档将重用该文档)
+	// TODO: 鍦ㄦ�娣诲姞閲嶆柊鍒濆�鍖栦唬鐮�
+	// (SDI 鏂囨。灏嗛噸鐢ㄨ�鏂囨。)
 
 	return TRUE;
 }
@@ -46,22 +52,75 @@ BOOL CCTSManagerDoc::OnNewDocument()
 
 
 
-// CCTSManagerDoc 序列化
+// CCTSManagerDoc 搴忓垪鍖�
 
 void CCTSManagerDoc::Serialize(CArchive& ar)
 {
 	if (ar.IsStoring())
 	{
-		// TODO: 在此添加存储代码
+		// TODO: 鍦ㄦ�娣诲姞瀛樺偍浠g爜
+	}
+	else
+	{
+		// TODO: 鍦ㄦ�娣诲姞鍔犺浇浠g爜
+	}
+}
+
+#ifdef SHARED_HANDLERS
+
+// 缂╃暐鍥剧殑鏀�寔
+void CCTSManagerDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
+{
+	// 淇�敼姝や唬鐮佷互缁樺埗鏂囨。鏁版嵁
+	dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));
+
+	CString strText = _T("TODO: implement thumbnail drawing here");
+	LOGFONT lf;
+
+	CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
+	pDefaultGUIFont->GetLogFont(&lf);
+	lf.lfHeight = 36;
+
+	CFont fontDraw;
+	fontDraw.CreateFontIndirect(&lf);
+
+	CFont* pOldFont = dc.SelectObject(&fontDraw);
+	dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);
+	dc.SelectObject(pOldFont);
+}
+
+// 鎼滅储澶勭悊绋嬪簭鐨勬敮鎸�
+void CCTSManagerDoc::InitializeSearchContent()
+{
+	CString strSearchContent;
+	// 浠庢枃妗f暟鎹��缃�悳绱㈠唴瀹广€�
+	// 鍐呭�閮ㄥ垎搴旂敱鈥�;鈥濆垎闅�
+
+	// 渚嬪�:     strSearchContent = _T("point;rectangle;circle;ole object;")锛�
+	SetSearchContent(strSearchContent);
+}
+
+void CCTSManagerDoc::SetSearchContent(const CString& value)
+{
+	if (value.IsEmpty())
+	{
+		RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);
 	}
 	else
 	{
-		// TODO: 在此添加加载代码
+		CMFCFilterChunkValueImpl *pChunk = nullptr;
+		ATLTRY(pChunk = new CMFCFilterChunkValueImpl);
+		if (pChunk != nullptr)
+		{
+			pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);
+			SetChunkValue(pChunk);
+		}
 	}
 }
 
+#endif // SHARED_HANDLERS
 
-// CCTSManagerDoc 诊断
+// CCTSManagerDoc 璇婃柇
 
 #ifdef _DEBUG
 void CCTSManagerDoc::AssertValid() const
@@ -76,4 +135,4 @@ void CCTSManagerDoc::Dump(CDumpContext& dc) const
 #endif //_DEBUG
 
 
-// CCTSManagerDoc 命令
+// CCTSManagerDoc 鍛戒护

+ 18 - 11
CTSManager/CTSManager/CTSManagerDoc.h

@@ -1,5 +1,5 @@
-
-// CTSManagerDoc.h : CCTSManagerDoc 类的接口
+锘�
+// CTSManagerDoc.h: CCTSManagerDoc 绫荤殑鎺ュ彛
 //
 
 
@@ -8,22 +8,26 @@
 
 class CCTSManagerDoc : public CDocument
 {
-protected: // 仅从序列化创建
-	CCTSManagerDoc();
+protected: // 浠呬粠搴忓垪鍖栧垱寤�
+	CCTSManagerDoc() noexcept;
 	DECLARE_DYNCREATE(CCTSManagerDoc)
 
-// 属性
+// 鐗规€�
 public:
 
-// 操作
+// 鎿嶄綔
 public:
 
-// 重写
+// 閲嶅啓
 public:
 	virtual BOOL OnNewDocument();
 	virtual void Serialize(CArchive& ar);
+#ifdef SHARED_HANDLERS
+	virtual void InitializeSearchContent();
+	virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
+#endif // SHARED_HANDLERS
 
-// 实现
+// 瀹炵幇
 public:
 	virtual ~CCTSManagerDoc();
 #ifdef _DEBUG
@@ -33,9 +37,12 @@ public:
 
 protected:
 
-// 生成的消息映射函数
+// 鐢熸垚鐨勬秷鎭�槧灏勫嚱鏁�
 protected:
 	DECLARE_MESSAGE_MAP()
-};
-
 
+#ifdef SHARED_HANDLERS
+	// 鐢ㄤ簬涓烘悳绱㈠�鐞嗙▼搴忚�缃�悳绱㈠唴瀹圭殑 Helper 鍑芥暟
+	void SetSearchContent(const CString& value);
+#endif // SHARED_HANDLERS
+};

+ 31 - 20
CTSManager/CTSManager/CTSManagerView.cpp

@@ -1,9 +1,14 @@
-
-// CTSManagerView.cpp : CCTSManagerView 类的实现
+锘�
+// CTSManagerView.cpp: CCTSManagerView 绫荤殑瀹炵幇
 //
 
-#include "stdafx.h"
+#include "pch.h"
+#include "framework.h"
+// SHARED_HANDLERS 鍙�互鍦ㄥ疄鐜伴�瑙堛€佺缉鐣ュ浘鍜屾悳绱㈢瓫閫夊櫒鍙ユ焺鐨�
+// ATL 椤圭洰涓�繘琛屽畾涔夛紝骞跺厑璁镐笌璇ラ」鐩�叡浜�枃妗d唬鐮併€�
+#ifndef SHARED_HANDLERS
 #include "CTSManager.h"
+#endif
 
 #include "CTSManagerDoc.h"
 #include "CTSManagerView.h"
@@ -18,17 +23,19 @@
 IMPLEMENT_DYNCREATE(CCTSManagerView, CView)
 
 BEGIN_MESSAGE_MAP(CCTSManagerView, CView)
-	// 标准打印命令
+	// 鏍囧噯鎵撳嵃鍛戒护
 	ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
 	ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
 	ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CCTSManagerView::OnFilePrintPreview)
+	ON_WM_CONTEXTMENU()
+	ON_WM_RBUTTONUP()
 END_MESSAGE_MAP()
 
-// CCTSManagerView 构造/析构
+// CCTSManagerView 鏋勯€�/鏋愭瀯
 
-CCTSManagerView::CCTSManagerView()
+CCTSManagerView::CCTSManagerView() noexcept
 {
-	// TODO: 在此处添加构造代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犳瀯閫犱唬鐮�
 
 }
 
@@ -38,13 +45,13 @@ CCTSManagerView::~CCTSManagerView()
 
 BOOL CCTSManagerView::PreCreateWindow(CREATESTRUCT& cs)
 {
-	// TODO: 在此处通过修改
-	//  CREATESTRUCT cs 来修改窗口类或样式
+	// TODO: 鍦ㄦ�澶勯€氳繃淇�敼
+	//  CREATESTRUCT cs 鏉ヤ慨鏀圭獥鍙g被鎴栨牱寮�
 
 	return CView::PreCreateWindow(cs);
 }
 
-// CCTSManagerView 绘制
+// CCTSManagerView 缁樺浘
 
 void CCTSManagerView::OnDraw(CDC* /*pDC*/)
 {
@@ -53,47 +60,51 @@ void CCTSManagerView::OnDraw(CDC* /*pDC*/)
 	if (!pDoc)
 		return;
 
-	// TODO: 在此处为本机数据添加绘制代码
+	// TODO: 鍦ㄦ�澶勪负鏈�満鏁版嵁娣诲姞缁樺埗浠g爜
 }
 
 
-// CCTSManagerView 打印
+// CCTSManagerView 鎵撳嵃
 
 
 void CCTSManagerView::OnFilePrintPreview()
 {
+#ifndef SHARED_HANDLERS
 	AFXPrintPreview(this);
+#endif
 }
 
 BOOL CCTSManagerView::OnPreparePrinting(CPrintInfo* pInfo)
 {
-	// 默认准备
+	// 榛樿�鍑嗗�
 	return DoPreparePrinting(pInfo);
 }
 
 void CCTSManagerView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
 {
-	// TODO: 添加额外的打印前进行的初始化过程
+	// TODO: 娣诲姞棰濆�鐨勬墦鍗板墠杩涜�鐨勫垵濮嬪寲杩囩▼
 }
 
 void CCTSManagerView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
 {
-	// TODO: 添加打印后进行的清理过程
+	// TODO: 娣诲姞鎵撳嵃鍚庤繘琛岀殑娓呯悊杩囩▼
 }
 
-void CCTSManagerView::OnRButtonUp(UINT nFlags, CPoint point)
+void CCTSManagerView::OnRButtonUp(UINT /* nFlags */, CPoint point)
 {
 	ClientToScreen(&point);
 	OnContextMenu(this, point);
 }
 
-void CCTSManagerView::OnContextMenu(CWnd* pWnd, CPoint point)
+void CCTSManagerView::OnContextMenu(CWnd* /* pWnd */, CPoint point)
 {
+#ifndef SHARED_HANDLERS
 	theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);
+#endif
 }
 
 
-// CCTSManagerView 诊断
+// CCTSManagerView 璇婃柇
 
 #ifdef _DEBUG
 void CCTSManagerView::AssertValid() const
@@ -106,7 +117,7 @@ void CCTSManagerView::Dump(CDumpContext& dc) const
 	CView::Dump(dc);
 }
 
-CCTSManagerDoc* CCTSManagerView::GetDocument() const // 非调试版本是内联的
+CCTSManagerDoc* CCTSManagerView::GetDocument() const // 闈炶皟璇曠増鏈�槸鍐呰仈鐨�
 {
 	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCTSManagerDoc)));
 	return (CCTSManagerDoc*)m_pDocument;
@@ -114,4 +125,4 @@ CCTSManagerDoc* CCTSManagerView::GetDocument() const // 
 #endif //_DEBUG
 
 
-// CCTSManagerView 消息处理程序
+// CCTSManagerView 娑堟伅澶勭悊绋嬪簭

+ 11 - 12
CTSManager/CTSManager/CTSManagerView.h

@@ -1,34 +1,33 @@
-
-// CTSManagerView.h : CCTSManagerView 类的接口
+锘�
+// CTSManagerView.h: CCTSManagerView 绫荤殑鎺ュ彛
 //
 
-
 #pragma once
 
 
 class CCTSManagerView : public CView
 {
-protected: // 仅从序列化创建
-	CCTSManagerView();
+protected: // 浠呬粠搴忓垪鍖栧垱寤�
+	CCTSManagerView() noexcept;
 	DECLARE_DYNCREATE(CCTSManagerView)
 
-// 属性
+// 鐗规€�
 public:
 	CCTSManagerDoc* GetDocument() const;
 
-// 操作
+// 鎿嶄綔
 public:
 
-// 重写
+// 閲嶅啓
 public:
-	virtual void OnDraw(CDC* pDC);  // 重写以绘制该视图
+	virtual void OnDraw(CDC* pDC);  // 閲嶅啓浠ョ粯鍒惰�瑙嗗浘
 	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
 protected:
 	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
 	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
 	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
 
-// 实现
+// 瀹炵幇
 public:
 	virtual ~CCTSManagerView();
 #ifdef _DEBUG
@@ -38,7 +37,7 @@ public:
 
 protected:
 
-// 生成的消息映射函数
+// 鐢熸垚鐨勬秷鎭�槧灏勫嚱鏁�
 protected:
 	afx_msg void OnFilePrintPreview();
 	afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
@@ -46,7 +45,7 @@ protected:
 	DECLARE_MESSAGE_MAP()
 };
 
-#ifndef _DEBUG  // CTSManagerView.cpp 中的调试版本
+#ifndef _DEBUG  // CTSManagerView.cpp 涓�殑璋冭瘯鐗堟湰
 inline CCTSManagerDoc* CCTSManagerView::GetDocument() const
    { return reinterpret_cast<CCTSManagerDoc*>(m_pDocument); }
 #endif

+ 27 - 8
CTSManager/CTSManager/CalendarBar.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+锘�
+#include "pch.h"
+#include "framework.h"
 #include "CalendarBar.h"
 #include "CTSManager.h"
 
@@ -28,11 +29,12 @@ BEGIN_MESSAGE_MAP(CCalendarBar, CWnd)
 	ON_WM_ERASEBKGND()
 	ON_WM_SIZE()
 	ON_WM_PAINT()
+	ON_WM_SETFOCUS()
 	ON_WM_SETTINGCHANGE()
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
-// CCalendarBar 消息处理程序
+// CCalendarBar 娑堟伅澶勭悊绋嬪簭
 
 int CCalendarBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
@@ -51,20 +53,37 @@ int CCalendarBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	return 0;
 }
 
+BOOL CCalendarBar::PreTranslateMessage(MSG *pMsg)
+{
+	if (pMsg->message == WM_LBUTTONDOWN)
+	{
+		// 纭�繚灏嗛敭鐩樼劍鐐硅�缃�埌鏃ュ巻涓�
+		m_wndCalendar.SetFocus();
+	}
+
+	return CWnd::PreTranslateMessage(pMsg);
+}
+
 BOOL CCalendarBar::OnEraseBkgnd(CDC* /*pDC*/)
 {
 	return TRUE;
 }
 
+void CCalendarBar::OnSetFocus(CWnd *pOldWnd)
+{
+	CWnd::OnSetFocus(pOldWnd);
+	m_wndCalendar.SetFocus();
+}
+
 void CCalendarBar::OnSize(UINT nType, int cx, int cy)
 {
 	CWnd::OnSize(nType, cx, cy);
 
 	int nMyCalendarsHeight = 70;
 
-	if (m_wndCalendar.GetSafeHwnd() != NULL)
+	if (m_wndCalendar.GetSafeHwnd() != nullptr)
 	{
-		m_wndCalendar.SetWindowPos(NULL, nBorderSize, nBorderSize, cx - 2 * nBorderSize, cy - 2 * nBorderSize - nMyCalendarsHeight - 10, SWP_NOZORDER | SWP_NOACTIVATE);
+		m_wndCalendar.SetWindowPos(nullptr, nBorderSize, nBorderSize, cx - 2 * nBorderSize, cy - 2 * nBorderSize - nMyCalendarsHeight - 10, SWP_NOZORDER | SWP_NOACTIVATE);
 	}
 
 	m_nMyCalendarsY = cy - nMyCalendarsHeight;
@@ -72,12 +91,12 @@ void CCalendarBar::OnSize(UINT nType, int cx, int cy)
 
 BOOL CCalendarBar::Create(const RECT& rect, CWnd* pParentWnd, UINT nID)
 {
-	return CWnd::Create(NULL, _T(""), WS_CHILD | WS_VISIBLE, rect, pParentWnd, nID);
+	return CWnd::Create(nullptr, _T(""), WS_CHILD | WS_VISIBLE, rect, pParentWnd, nID);
 }
 
 void CCalendarBar::OnPaint()
 {
-	CPaintDC dc(this); // 用于绘制的设备上下文
+	CPaintDC dc(this); // 鐢ㄤ簬缁樺埗鐨勮�澶囦笂涓嬫枃
 
 	CRect rectClient;
 	GetClientRect(rectClient);
@@ -90,7 +109,7 @@ void CCalendarBar::OnPaint()
 		rectMyCalendarsCaption.top = m_nMyCalendarsY;
 		rectMyCalendarsCaption.bottom = rectMyCalendarsCaption.top + afxGlobalData.GetTextHeight(TRUE) * 3 / 2;
 
-		COLORREF clrText = CMFCVisualManager::GetInstance()->OnDrawPaneCaption(&dc, NULL, FALSE, rectMyCalendarsCaption, CRect(0, 0, 0, 0));
+		COLORREF clrText = CMFCVisualManager::GetInstance()->OnDrawPaneCaption(&dc, nullptr, FALSE, rectMyCalendarsCaption, CRect(0, 0, 0, 0));
 
 		CPen* pOldPen = dc.SelectObject(&afxGlobalData.penBarShadow);
 

+ 8 - 6
CTSManager/CTSManager/CalendarBar.h

@@ -1,26 +1,27 @@
-
+
 #pragma once
 
 /////////////////////////////////////////////////////////////////////////////
-// CCalendarBar ´°¿Ú
+// CCalendarBar 窗�
 
 class CCalendarBar : public CWnd
 {
-// ¹¹Ôì
+// 构造
 public:
 	CCalendarBar();
 
-// ÊôÐÔ
+// 特性
 protected:
 	CMonthCalCtrl m_wndCalendar;
 	int m_nMyCalendarsY;
 	CImageList m_Images;
 
-// ÖØÐ´
+// �写
 public:
 	virtual BOOL Create(const RECT& rect, CWnd* pParentWnd, UINT nID = (UINT)-1);
+	virtual BOOL PreTranslateMessage(MSG *pMsg);
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~CCalendarBar();
 
@@ -29,6 +30,7 @@ protected:
 	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
 	afx_msg void OnSize(UINT nType, int cx, int cy);
 	afx_msg void OnPaint();
+	afx_msg void OnSetFocus(CWnd *pOldWnd);
 
 	DECLARE_MESSAGE_MAP()
 };

+ 13 - 9
CTSManager/CTSManager/ChildFrm.cpp

@@ -1,8 +1,9 @@
-
-// ChildFrm.cpp : CChildFrame 类的实现
+锘�
+// ChildFrm.cpp: CChildFrame 绫荤殑瀹炵幇
 //
 
-#include "stdafx.h"
+#include "pch.h"
+#include "framework.h"
 #include "CTSManager.h"
 
 #include "ChildFrm.h"
@@ -18,11 +19,11 @@ IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWndEx)
 BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWndEx)
 END_MESSAGE_MAP()
 
-// CChildFrame 构造/析构
+// CChildFrame 鏋勯€�/鏋愭瀯
 
-CChildFrame::CChildFrame()
+CChildFrame::CChildFrame() noexcept
 {
-	// TODO: 在此添加成员初始化代码
+	// TODO: 鍦ㄦ�娣诲姞鎴愬憳鍒濆�鍖栦唬鐮�
 }
 
 CChildFrame::~CChildFrame()
@@ -32,14 +33,17 @@ CChildFrame::~CChildFrame()
 
 BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
 {
-	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
+	// TODO: 鍦ㄦ�澶勯€氳繃淇�敼 CREATESTRUCT cs 鏉ヤ慨鏀圭獥鍙g被鎴栨牱寮�
 	if( !CMDIChildWndEx::PreCreateWindow(cs) )
 		return FALSE;
 
+	cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU
+		| FWS_ADDTOTITLE | WS_THICKFRAME;
+
 	return TRUE;
 }
 
-// CChildFrame 诊断
+// CChildFrame 璇婃柇
 
 #ifdef _DEBUG
 void CChildFrame::AssertValid() const
@@ -53,4 +57,4 @@ void CChildFrame::Dump(CDumpContext& dc) const
 }
 #endif //_DEBUG
 
-// CChildFrame 消息处理程序
+// CChildFrame 娑堟伅澶勭悊绋嬪簭

+ 11 - 8
CTSManager/CTSManager/ChildFrm.h

@@ -1,5 +1,5 @@
-
-// ChildFrm.h : CChildFrame ŔŕµÄ˝ÓżÚ
+
+// ChildFrm.h: CChildFrame 类的接口
 //
 
 #pragma once
@@ -8,18 +8,21 @@ class CChildFrame : public CMDIChildWndEx
 {
 	DECLARE_DYNCREATE(CChildFrame)
 public:
-	CChildFrame();
+	CChildFrame() noexcept;
 
-// ĘôĐÔ
+// 特性
+protected:
+	CSplitterWndEx m_wndSplitter;
 public:
 
-// ˛Ů×÷
+// 操作
 public:
 
-// ÖŘĐ´
+// 重写
+	public:
 	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
 
-// ʵĎÖ
+// 实现
 public:
 	virtual ~CChildFrame();
 #ifdef _DEBUG
@@ -27,7 +30,7 @@ public:
 	virtual void Dump(CDumpContext& dc) const;
 #endif
 
-// ÉúłÉµÄĎűϢӳÉ亯Ęý
+// 生�的���射函数
 protected:
 	DECLARE_MESSAGE_MAP()
 };

+ 30 - 29
CTSManager/CTSManager/ClassView.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+嚜�
+#include "pch.h"
+#include "framework.h"
 #include "MainFrm.h"
 #include "ClassView.h"
 #include "Resource.h"
@@ -12,7 +13,7 @@ class CClassViewMenuButton : public CMFCToolBarMenuButton
 	DECLARE_SERIAL(CClassViewMenuButton)
 
 public:
-	CClassViewMenuButton(HMENU hMenu = NULL) : CMFCToolBarMenuButton((UINT)-1, hMenu, -1)
+	CClassViewMenuButton(HMENU hMenu = nullptr) noexcept : CMFCToolBarMenuButton((UINT)-1, hMenu, -1)
 	{
 	}
 
@@ -33,10 +34,10 @@ public:
 IMPLEMENT_SERIAL(CClassViewMenuButton, CMFCToolBarMenuButton, 1)
 
 //////////////////////////////////////////////////////////////////////
-// 凳婖/昴凳
+// ����/�鞉�
 //////////////////////////////////////////////////////////////////////
 
-CClassView::CClassView()
+CClassView::CClassView() noexcept
 {
 	m_nCurrSort = ID_SORTING_GROUPBYTYPE;
 }
@@ -61,7 +62,7 @@ BEGIN_MESSAGE_MAP(CClassView, CDockablePane)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
-// CClassView 秏洘揭燴最唗
+// CClassView 瘨��憭��蝔见�
 
 int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
@@ -71,18 +72,18 @@ int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	CRect rectDummy;
 	rectDummy.SetRectEmpty();
 
-	// 斐膘弝芞:
+	// �𥕦遣閫�㦛: 
 	const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
 
 	if (!m_wndClassView.Create(dwViewStyle, rectDummy, this, 2))
 	{
-		TRACE0("帤夔斐膘濬弝芞\n");
-		return -1;      // 帤夔斐膘
+		TRACE0("�芾��𥕦遣蝐餉��閱n");
+		return -1;      // �芾��𥕦遣
 	}
 
-	// 樓婥芞砉:
+	// �㰘蝸�曉�: 
 	m_wndToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_SORT);
-	m_wndToolBar.LoadToolBar(IDR_SORT, 0, 0, TRUE /* 眒坶隅*/);
+	m_wndToolBar.LoadToolBar(IDR_SORT, 0, 0, TRUE /* 撌脤�摰�*/);
 
 	OnChangeVisualStyle();
 
@@ -91,7 +92,7 @@ int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	m_wndToolBar.SetOwner(this);
 
-	// 垀衄韜鍔蔚籵徹森諷璃繚蚕ㄛ奧祥岆籵徹翋遺殤繚蚕:
+	// ���匧𦶢隞文��朞�甇斗綉隞嗉楝�梧��䔶��舫�朞�銝餅��嗉楝��: 
 	m_wndToolBar.SetRouteCommandsViaFrame(FALSE);
 
 	CMenu menuSort;
@@ -101,7 +102,7 @@ int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	CClassViewMenuButton* pButton =  DYNAMIC_DOWNCAST(CClassViewMenuButton, m_wndToolBar.GetButton(0));
 
-	if (pButton != NULL)
+	if (pButton != nullptr)
 	{
 		pButton->m_bText = FALSE;
 		pButton->m_bImage = TRUE;
@@ -109,7 +110,7 @@ int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 		pButton->SetMessageWnd(this);
 	}
 
-	// 沓⻌珨虳噙怓攷弝芞杅擂(森揭硐剒沓⻌剞攜測鎢ㄛ奧祥岆葩娸腔杅擂)
+	// 憛怠�銝�鈭偦����閫�㦛�唳旿(甇文��芷�憛怠��𡁏�隞��嚗諹�䔶��臬�����唳旿)
 	FillClassView();
 
 	return 0;
@@ -123,7 +124,7 @@ void CClassView::OnSize(UINT nType, int cx, int cy)
 
 void CClassView::FillClassView()
 {
-	HTREEITEM hRoot = m_wndClassView.InsertItem(_T("FakeApp "), 0, 0);
+	HTREEITEM hRoot = m_wndClassView.InsertItem(_T("FakeApp 蝐�"), 0, 0);
 	m_wndClassView.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD);
 
 	HTREEITEM hClass = m_wndClassView.InsertItem(_T("CFakeAboutDlg"), 1, 1, hRoot);
@@ -172,13 +173,13 @@ void CClassView::OnContextMenu(CWnd* pWnd, CPoint point)
 
 	if (point != CPoint(-1, -1))
 	{
-		// 恁寁眒等僻腔砐:
+		// �㗇𥋘撌脣��餌�憿�: 
 		CPoint ptTree = point;
 		pWndTree->ScreenToClient(&ptTree);
 
 		UINT flags = 0;
 		HTREEITEM hTreeItem = pWndTree->HitTest(ptTree, &flags);
-		if (hTreeItem != NULL)
+		if (hTreeItem != nullptr)
 		{
 			pWndTree->SelectItem(hTreeItem);
 		}
@@ -204,7 +205,7 @@ void CClassView::OnContextMenu(CWnd* pWnd, CPoint point)
 
 void CClassView::AdjustLayout()
 {
-	if (GetSafeHwnd() == NULL)
+	if (GetSafeHwnd() == nullptr)
 	{
 		return;
 	}
@@ -214,8 +215,8 @@ void CClassView::AdjustLayout()
 
 	int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy;
 
-	m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
-	m_wndClassView.SetWindowPos(NULL, rectClient.left + 1, rectClient.top + cyTlb + 1, rectClient.Width() - 2, rectClient.Height() - cyTlb - 2, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndToolBar.SetWindowPos(nullptr, rectClient.left, rectClient.top, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndClassView.SetWindowPos(nullptr, rectClient.left + 1, rectClient.top + cyTlb + 1, rectClient.Width() - 2, rectClient.Height() - cyTlb - 2, SWP_NOACTIVATE | SWP_NOZORDER);
 }
 
 BOOL CClassView::PreTranslateMessage(MSG* pMsg)
@@ -234,7 +235,7 @@ void CClassView::OnSort(UINT id)
 
 	CClassViewMenuButton* pButton =  DYNAMIC_DOWNCAST(CClassViewMenuButton, m_wndToolBar.GetButton(0));
 
-	if (pButton != NULL)
+	if (pButton != nullptr)
 	{
 		pButton->SetImage(GetCmdMgr()->GetCmdImage(id));
 		m_wndToolBar.Invalidate();
@@ -249,32 +250,32 @@ void CClassView::OnUpdateSort(CCmdUI* pCmdUI)
 
 void CClassView::OnClassAddMemberFunction()
 {
-	AfxMessageBox(_T("氝樓傖埜滲杅..."));
+	AfxMessageBox(_T("瘛餃��𣂼��賣㺭..."));
 }
 
 void CClassView::OnClassAddMemberVariable()
 {
-	// TODO: 婓森揭氝樓韜鍔揭燴最唗測鎢
+	// TODO: �冽迨憭�溶�惩𦶢隞文����摨譍誨��
 }
 
 void CClassView::OnClassDefinition()
 {
-	// TODO: 婓森揭氝樓韜鍔揭燴最唗測鎢
+	// TODO: �冽迨憭�溶�惩𦶢隞文����摨譍誨��
 }
 
 void CClassView::OnClassProperties()
 {
-	// TODO: 婓森揭氝樓韜鍔揭燴最唗測鎢
+	// TODO: �冽迨憭�溶�惩𦶢隞文����摨譍誨��
 }
 
 void CClassView::OnNewFolder()
 {
-	AfxMessageBox(_T("陔膘恅璃標..."));
+	AfxMessageBox(_T("�啣遣��辣憭�..."));
 }
 
 void CClassView::OnPaint()
 {
-	CPaintDC dc(this); // 蚚衾餅秶腔扢掘奻狟恅
+	CPaintDC dc(this); // �其�蝏睃���挽憭��銝𧢲�
 
 	CRect rectTree;
 	m_wndClassView.GetWindowRect(rectTree);
@@ -300,7 +301,7 @@ void CClassView::OnChangeVisualStyle()
 	CBitmap bmp;
 	if (!bmp.LoadBitmap(uiBmpId))
 	{
-		TRACE(_T("拸楊樓婥弇芞: %x\n"), uiBmpId);
+		TRACE(_T("�䭾��㰘蝸雿滚㦛: %x\n"), uiBmpId);
 		ASSERT(FALSE);
 		return;
 	}
@@ -318,5 +319,5 @@ void CClassView::OnChangeVisualStyle()
 	m_wndClassView.SetImageList(&m_ClassViewImages, TVSIL_NORMAL);
 
 	m_wndToolBar.CleanUpLockedImages();
-	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_SORT_24 : IDR_SORT, 0, 0, TRUE /* 坶隅*/);
+	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_SORT_24 : IDR_SORT, 0, 0, TRUE /* ���*/);
 }

+ 3 - 3
CTSManager/CTSManager/ClassView.h

@@ -1,4 +1,4 @@
-
+
 #pragma once
 
 #include "ViewTree.h"
@@ -16,7 +16,7 @@ class CClassToolBar : public CMFCToolBar
 class CClassView : public CDockablePane
 {
 public:
-	CClassView();
+	CClassView() noexcept;
 	virtual ~CClassView();
 
 	void AdjustLayout();
@@ -30,7 +30,7 @@ protected:
 
 	void FillClassView();
 
-// ÖØÐ´
+// �写
 public:
 	virtual BOOL PreTranslateMessage(MSG* pMsg);
 

+ 33 - 32
CTSManager/CTSManager/FileView.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+锘�
+#include "pch.h"
+#include "framework.h"
 #include "mainfrm.h"
 #include "FileView.h"
 #include "Resource.h"
@@ -14,7 +15,7 @@ static char THIS_FILE[]=__FILE__;
 /////////////////////////////////////////////////////////////////////////////
 // CFileView
 
-CFileView::CFileView()
+CFileView::CFileView() noexcept
 {
 }
 
@@ -38,7 +39,7 @@ BEGIN_MESSAGE_MAP(CFileView, CDockablePane)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
-// CWorkspaceBar 消息处理程序
+// CWorkspaceBar 娑堟伅澶勭悊绋嬪簭
 
 int CFileView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
@@ -48,21 +49,21 @@ int CFileView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	CRect rectDummy;
 	rectDummy.SetRectEmpty();
 
-	// 创建视图:
+	// 鍒涘缓瑙嗗浘: 
 	const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
 
 	if (!m_wndFileView.Create(dwViewStyle, rectDummy, this, 4))
 	{
-		TRACE0("未能创建文件视图\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓鏂囦欢瑙嗗浘\n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
-	// 加载视图图像:
+	// 鍔犺浇瑙嗗浘鍥惧儚: 
 	m_FileViewImages.Create(IDB_FILE_VIEW, 16, 0, RGB(255, 0, 255));
 	m_wndFileView.SetImageList(&m_FileViewImages, TVSIL_NORMAL);
 
 	m_wndToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_EXPLORER);
-	m_wndToolBar.LoadToolBar(IDR_EXPLORER, 0, 0, TRUE /* 已锁定*/);
+	m_wndToolBar.LoadToolBar(IDR_EXPLORER, 0, 0, TRUE /* 宸查攣瀹�*/);
 
 	OnChangeVisualStyle();
 
@@ -72,10 +73,10 @@ int CFileView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	m_wndToolBar.SetOwner(this);
 
-	// 所有命令将通过此控件路由,而不是通过主框架路由:
+	// 鎵€鏈夊懡浠ゅ皢閫氳繃姝ゆ帶浠惰矾鐢憋紝鑰屼笉鏄�€氳繃涓绘�鏋惰矾鐢�: 
 	m_wndToolBar.SetRouteCommandsViaFrame(FALSE);
 
-	// 填入一些静态树视图数据(此处只需填入虚拟代码,而不是复杂的数据)
+	// 濉�叆涓€浜涢潤鎬佹爲瑙嗗浘鏁版嵁(姝ゅ�鍙�渶濉�叆铏氭嫙浠g爜锛岃€屼笉鏄��鏉傜殑鏁版嵁)
 	FillFileView();
 	AdjustLayout();
 
@@ -90,28 +91,28 @@ void CFileView::OnSize(UINT nType, int cx, int cy)
 
 void CFileView::FillFileView()
 {
-	HTREEITEM hRoot = m_wndFileView.InsertItem(_T("FakeApp 文件"), 0, 0);
+	HTREEITEM hRoot = m_wndFileView.InsertItem(_T("FakeApp 鏂囦欢"), 0, 0);
 	m_wndFileView.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD);
 
-	HTREEITEM hSrc = m_wndFileView.InsertItem(_T("FakeApp 源文件"), 0, 0, hRoot);
+	HTREEITEM hSrc = m_wndFileView.InsertItem(_T("FakeApp 婧愭枃浠�"), 0, 0, hRoot);
 
 	m_wndFileView.InsertItem(_T("FakeApp.cpp"), 1, 1, hSrc);
 	m_wndFileView.InsertItem(_T("FakeApp.rc"), 1, 1, hSrc);
 	m_wndFileView.InsertItem(_T("FakeAppDoc.cpp"), 1, 1, hSrc);
 	m_wndFileView.InsertItem(_T("FakeAppView.cpp"), 1, 1, hSrc);
 	m_wndFileView.InsertItem(_T("MainFrm.cpp"), 1, 1, hSrc);
-	m_wndFileView.InsertItem(_T("StdAfx.cpp"), 1, 1, hSrc);
+	m_wndFileView.InsertItem(_T("pch.cpp"), 1, 1, hSrc);
 
-	HTREEITEM hInc = m_wndFileView.InsertItem(_T("FakeApp 头文件"), 0, 0, hRoot);
+	HTREEITEM hInc = m_wndFileView.InsertItem(_T("FakeApp 澶存枃浠�"), 0, 0, hRoot);
 
 	m_wndFileView.InsertItem(_T("FakeApp.h"), 2, 2, hInc);
 	m_wndFileView.InsertItem(_T("FakeAppDoc.h"), 2, 2, hInc);
 	m_wndFileView.InsertItem(_T("FakeAppView.h"), 2, 2, hInc);
 	m_wndFileView.InsertItem(_T("Resource.h"), 2, 2, hInc);
 	m_wndFileView.InsertItem(_T("MainFrm.h"), 2, 2, hInc);
-	m_wndFileView.InsertItem(_T("StdAfx.h"), 2, 2, hInc);
+	m_wndFileView.InsertItem(_T("pch.h"), 2, 2, hInc);
 
-	HTREEITEM hRes = m_wndFileView.InsertItem(_T("FakeApp 资源文件"), 0, 0, hRoot);
+	HTREEITEM hRes = m_wndFileView.InsertItem(_T("FakeApp 璧勬簮鏂囦欢"), 0, 0, hRoot);
 
 	m_wndFileView.InsertItem(_T("FakeApp.ico"), 2, 2, hRes);
 	m_wndFileView.InsertItem(_T("FakeApp.rc2"), 2, 2, hRes);
@@ -136,13 +137,13 @@ void CFileView::OnContextMenu(CWnd* pWnd, CPoint point)
 
 	if (point != CPoint(-1, -1))
 	{
-		// 选择已单击的项:
+		// 閫夋嫨宸插崟鍑荤殑椤�: 
 		CPoint ptTree = point;
 		pWndTree->ScreenToClient(&ptTree);
 
 		UINT flags = 0;
 		HTREEITEM hTreeItem = pWndTree->HitTest(ptTree, &flags);
-		if (hTreeItem != NULL)
+		if (hTreeItem != nullptr)
 		{
 			pWndTree->SelectItem(hTreeItem);
 		}
@@ -154,7 +155,7 @@ void CFileView::OnContextMenu(CWnd* pWnd, CPoint point)
 
 void CFileView::AdjustLayout()
 {
-	if (GetSafeHwnd() == NULL)
+	if (GetSafeHwnd() == nullptr)
 	{
 		return;
 	}
@@ -164,49 +165,49 @@ void CFileView::AdjustLayout()
 
 	int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy;
 
-	m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
-	m_wndFileView.SetWindowPos(NULL, rectClient.left + 1, rectClient.top + cyTlb + 1, rectClient.Width() - 2, rectClient.Height() - cyTlb - 2, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndToolBar.SetWindowPos(nullptr, rectClient.left, rectClient.top, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndFileView.SetWindowPos(nullptr, rectClient.left + 1, rectClient.top + cyTlb + 1, rectClient.Width() - 2, rectClient.Height() - cyTlb - 2, SWP_NOACTIVATE | SWP_NOZORDER);
 }
 
 void CFileView::OnProperties()
 {
-	AfxMessageBox(_T("属性...."));
+	AfxMessageBox(_T("灞炴€�...."));
 
 }
 
 void CFileView::OnFileOpen()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnFileOpenWith()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnDummyCompile()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnEditCut()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnEditCopy()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnEditClear()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CFileView::OnPaint()
 {
-	CPaintDC dc(this); // 用于绘制的设备上下文
+	CPaintDC dc(this); // 鐢ㄤ簬缁樺埗鐨勮�澶囦笂涓嬫枃
 
 	CRect rectTree;
 	m_wndFileView.GetWindowRect(rectTree);
@@ -226,7 +227,7 @@ void CFileView::OnSetFocus(CWnd* pOldWnd)
 void CFileView::OnChangeVisualStyle()
 {
 	m_wndToolBar.CleanUpLockedImages();
-	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_EXPLORER_24 : IDR_EXPLORER, 0, 0, TRUE /* 锁定 */);
+	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_EXPLORER_24 : IDR_EXPLORER, 0, 0, TRUE /* 閿佸畾*/);
 
 	m_FileViewImages.DeleteImageList();
 
@@ -235,7 +236,7 @@ void CFileView::OnChangeVisualStyle()
 	CBitmap bmp;
 	if (!bmp.LoadBitmap(uiBmpId))
 	{
-		TRACE(_T("无法加载位图: %x\n"), uiBmpId);
+		TRACE(_T("鏃犳硶鍔犺浇浣嶅浘: %x\n"), uiBmpId);
 		ASSERT(FALSE);
 		return;
 	}

+ 5 - 5
CTSManager/CTSManager/FileView.h

@@ -1,4 +1,4 @@
-
+
 #pragma once
 
 #include "ViewTree.h"
@@ -15,14 +15,14 @@ class CFileViewToolBar : public CMFCToolBar
 
 class CFileView : public CDockablePane
 {
-// ¹¹Ôì
+// 构造
 public:
-	CFileView();
+	CFileView() noexcept;
 
 	void AdjustLayout();
 	void OnChangeVisualStyle();
 
-// ÊôÐÔ
+// 特性
 protected:
 
 	CViewTree m_wndFileView;
@@ -32,7 +32,7 @@ protected:
 protected:
 	void FillFileView();
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~CFileView();
 

+ 96 - 76
CTSManager/CTSManager/MainFrm.cpp

@@ -1,8 +1,9 @@
-
-// MainFrm.cpp : CMainFrame 类的实现
+锘�
+// MainFrm.cpp: CMainFrame 绫荤殑瀹炵幇
 //
 
-#include "stdafx.h"
+#include "pch.h"
+#include "framework.h"
 #include "CTSManager.h"
 
 #include "MainFrm.h"
@@ -24,24 +25,25 @@ BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
 	ON_COMMAND(ID_WINDOW_MANAGER, &CMainFrame::OnWindowManager)
 	ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize)
 	ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, &CMainFrame::OnToolbarCreateNew)
-	ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook)
-	ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook)
+	ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7, &CMainFrame::OnApplicationLook)
+	ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7, &CMainFrame::OnUpdateApplicationLook)
+	ON_WM_SETTINGCHANGE()
 END_MESSAGE_MAP()
 
 static UINT indicators[] =
 {
-	ID_SEPARATOR,           // 状态行指示器
+	ID_SEPARATOR,           // 鐘舵€佽�鎸囩ず鍣�
 	ID_INDICATOR_CAPS,
 	ID_INDICATOR_NUM,
 	ID_INDICATOR_SCRL,
 };
 
-// CMainFrame 构造/析构
+// CMainFrame 鏋勯€�/鏋愭瀯
 
-CMainFrame::CMainFrame()
+CMainFrame::CMainFrame() noexcept
 {
-	// TODO: 在此添加成员初始化代码
-	theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2005);
+	// TODO: 鍦ㄦ�娣诲姞鎴愬憳鍒濆�鍖栦唬鐮�
+	theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2008);
 }
 
 CMainFrame::~CMainFrame()
@@ -54,33 +56,31 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 		return -1;
 
 	BOOL bNameValid;
-	// 基于持久值设置视觉管理器和样式
-	OnApplicationLook(theApp.m_nAppLook);
 
 	CMDITabInfo mdiTabParams;
-	mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
-	mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
-	mdiTabParams.m_bTabIcons = FALSE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
-	mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
-	mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
+	mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 鍏朵粬鍙�敤鏍峰紡...
+	mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 璁剧疆涓� FALSE 浼氬皢鍏抽棴鎸夐挳鏀剧疆鍦ㄩ€夐」鍗″尯鍩熺殑鍙充晶
+	mdiTabParams.m_bTabIcons = FALSE;    // 璁剧疆涓� TRUE 灏嗗湪 MDI 閫夐」鍗′笂鍚�敤鏂囨。鍥炬爣
+	mdiTabParams.m_bAutoColor = TRUE;    // 璁剧疆涓� FALSE 灏嗙�鐢� MDI 閫夐」鍗$殑鑷�姩鐫€鑹�
+	mdiTabParams.m_bDocumentMenu = TRUE; // 鍦ㄩ€夐」鍗″尯鍩熺殑鍙宠竟缂樺惎鐢ㄦ枃妗h彍鍗�
 	EnableMDITabbedGroups(TRUE, mdiTabParams);
 
 	if (!m_wndMenuBar.Create(this))
 	{
-		TRACE0("未能创建菜单栏\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓鑿滃崟鏍廫n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
 	m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);
 
-	// 防止菜单栏在激活时获得焦点
+	// 闃叉�鑿滃崟鏍忓湪婵€娲绘椂鑾峰緱鐒︾偣
 	CMFCPopupMenu::SetForceMenuFocus(FALSE);
 
 	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
 		!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
 	{
-		TRACE0("未能创建工具栏\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓宸ュ叿鏍廫n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
 	CString strToolBarName;
@@ -93,17 +93,17 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	ASSERT(bNameValid);
 	m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
 
-	// 允许用户定义的工具栏操作:
-	InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);
+	// 鍏佽�鐢ㄦ埛瀹氫箟鐨勫伐鍏锋爮鎿嶄綔: 
+	InitUserToolbars(nullptr, uiFirstUserToolBarId, uiLastUserToolBarId);
 
 	if (!m_wndStatusBar.Create(this))
 	{
-		TRACE0("未能创建状态栏\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓鐘舵€佹爮\n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 	m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
 
-	// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行
+	// TODO: 濡傛灉鎮ㄤ笉甯屾湜宸ュ叿鏍忓拰鑿滃崟鏍忓彲鍋滈潬锛岃�鍒犻櫎杩欎簲琛�
 	m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
 	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 	EnableDocking(CBRS_ALIGN_ANY);
@@ -111,67 +111,68 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	DockPane(&m_wndToolBar);
 
 
-	// 启用 Visual Studio 2005 样式停靠窗口行为
+	// 鍚�敤 Visual Studio 2005 鏍峰紡鍋滈潬绐楀彛琛屼负
 	CDockingManager::SetDockingMode(DT_SMART);
-	// 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
+	// 鍚�敤 Visual Studio 2005 鏍峰紡鍋滈潬绐楀彛鑷�姩闅愯棌琛屼负
 	EnableAutoHidePanes(CBRS_ALIGN_ANY);
 
-	// 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
+	// 瀵艰埅绐楁牸灏嗗垱寤哄湪宸︿晶锛屽洜姝ゅ皢鏆傛椂绂佺敤宸︿晶鐨勫仠闈�: 
 	EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
 
-	// 创建并设置“Outlook”导航栏:
+	// 鍒涘缓骞惰�缃�€淥utlook鈥濆�鑸�爮: 
 	if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndTree, m_wndCalendar, 250))
 	{
-		TRACE0("未能创建导航窗格\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓瀵艰埅绐楁牸\n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
-	// 已创建 Outlook 栏,应允许在左侧停靠。
+	// 宸插垱寤� Outlook 鏍忥紝搴斿厑璁稿湪宸︿晶鍋滈潬銆�
 	EnableDocking(CBRS_ALIGN_LEFT);
 	EnableAutoHidePanes(CBRS_ALIGN_RIGHT);
 
-	// 加载菜单项图像(不在任何标准工具栏上):
+	// 鍔犺浇鑿滃崟椤瑰浘鍍�(涓嶅湪浠讳綍鏍囧噯宸ュ叿鏍忎笂): 
 	CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0);
 
-	// 创建停靠窗口
+	// 鍒涘缓鍋滈潬绐楀彛
 	if (!CreateDockingWindows())
 	{
-		TRACE0("未能创建停靠窗口\n");
+		TRACE0("鏈�兘鍒涘缓鍋滈潬绐楀彛\n");
 		return -1;
 	}
 
 	m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);
 	m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);
 	DockPane(&m_wndFileView);
-	CDockablePane* pTabbedBar = NULL;
+	CDockablePane* pTabbedBar = nullptr;
 	m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
 	m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
 	DockPane(&m_wndOutput);
 	m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
 	DockPane(&m_wndProperties);
 
+	// 鍩轰簬鎸佷箙鍊艰�缃��瑙夌�鐞嗗櫒鍜屾牱寮�
+	OnApplicationLook(theApp.m_nAppLook);
 
-	// 启用增强的窗口管理对话框
-	EnableWindowsDialog(ID_WINDOW_MANAGER, IDS_WINDOWS_MANAGER, TRUE);
+	// 鍚�敤澧炲己鐨勭獥鍙g�鐞嗗�璇濇�
+	EnableWindowsDialog(ID_WINDOW_MANAGER, ID_WINDOW_MANAGER, TRUE);
 
-	// 启用工具栏和停靠窗口菜单替换
+	// 鍚�敤宸ュ叿鏍忓拰鍋滈潬绐楀彛鑿滃崟鏇挎崲
 	EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);
 
-	// 启用快速(按住 Alt 拖动)工具栏自定义
+	// 鍚�敤蹇�€�(鎸変綇 Alt 鎷栧姩)宸ュ叿鏍忚嚜瀹氫箟
 	CMFCToolBar::EnableQuickCustomization();
 
-	if (CMFCToolBar::GetUserImages() == NULL)
+	if (CMFCToolBar::GetUserImages() == nullptr)
 	{
-		// 加载用户定义的工具栏图像
+		// 鍔犺浇鐢ㄦ埛瀹氫箟鐨勫伐鍏锋爮鍥惧儚
 		if (m_UserImages.Load(_T(".\\UserImages.bmp")))
 		{
-			m_UserImages.SetImageSize(CSize(16, 16), FALSE);
 			CMFCToolBar::SetUserImages(&m_UserImages);
 		}
 	}
 
-	// 启用菜单个性化(最近使用的命令)
-	// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
+	// 鍚�敤鑿滃崟涓�€у寲(鏈€杩戜娇鐢ㄧ殑鍛戒护)
+	// TODO: 瀹氫箟鎮ㄨ嚜宸辩殑鍩烘湰鍛戒护锛岀‘淇濇瘡涓�笅鎷夎彍鍗曡嚦灏戞湁涓€涓�熀鏈�懡浠ゃ€�
 	CList<UINT, UINT> lstBasicCommands;
 
 	lstBasicCommands.AddTail(ID_FILE_NEW);
@@ -191,6 +192,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);
 	lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);
 	lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);
+	lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7);
 	lstBasicCommands.AddTail(ID_SORTING_SORTALPHABETIC);
 	lstBasicCommands.AddTail(ID_SORTING_SORTBYTYPE);
 	lstBasicCommands.AddTail(ID_SORTING_SORTBYACCESS);
@@ -198,6 +200,10 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 
 	CMFCToolBar::SetBasicCommands(lstBasicCommands);
 
+	// 灏嗘枃妗e悕鍜屽簲鐢ㄧ▼搴忓悕绉板湪绐楀彛鏍囬�鏍忎笂鐨勯『搴忚繘琛屼氦鎹€€傝繖
+	// 灏嗘敼杩涗换鍔℃爮鐨勫彲鐢ㄦ€э紝鍥犱负鏄剧ず鐨勬枃妗e悕甯︽湁缂╃暐鍥俱€�
+	ModifyStyle(0, FWS_PREFIXTITLE);
+
 	return 0;
 }
 
@@ -205,8 +211,8 @@ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
 {
 	if( !CMDIFrameWndEx::PreCreateWindow(cs) )
 		return FALSE;
-	// TODO: 在此处通过修改
-	//  CREATESTRUCT cs 来修改窗口类或样式
+	// TODO: 鍦ㄦ�澶勯€氳繃淇�敼
+	//  CREATESTRUCT cs 鏉ヤ慨鏀圭獥鍙g被鎴栨牱寮�
 
 	return TRUE;
 }
@@ -215,44 +221,44 @@ BOOL CMainFrame::CreateDockingWindows()
 {
 	BOOL bNameValid;
 
-	// 创建类视图
+	// 鍒涘缓绫昏�鍥�
 	CString strClassView;
 	bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);
 	ASSERT(bNameValid);
 	if (!m_wndClassView.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
 	{
-		TRACE0("未能创建“类视图”窗口\n");
-		return FALSE; // 未能创建
+		TRACE0("鏈�兘鍒涘缓鈥滅被瑙嗗浘鈥濈獥鍙�n");
+		return FALSE; // 鏈�兘鍒涘缓
 	}
 
-	// 创建文件视图
+	// 鍒涘缓鏂囦欢瑙嗗浘
 	CString strFileView;
 	bNameValid = strFileView.LoadString(IDS_FILE_VIEW);
 	ASSERT(bNameValid);
 	if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI))
 	{
-		TRACE0("未能创建“文件视图”窗口\n");
-		return FALSE; // 未能创建
+		TRACE0("鏈�兘鍒涘缓鈥滄枃浠惰�鍥锯€濈獥鍙�n");
+		return FALSE; // 鏈�兘鍒涘缓
 	}
 
-	// 创建输出窗口
+	// 鍒涘缓杈撳嚭绐楀彛
 	CString strOutputWnd;
 	bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND);
 	ASSERT(bNameValid);
 	if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100), TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI))
 	{
-		TRACE0("未能创建输出窗口\n");
-		return FALSE; // 未能创建
+		TRACE0("鏈�兘鍒涘缓杈撳嚭绐楀彛\n");
+		return FALSE; // 鏈�兘鍒涘缓
 	}
 
-	// 创建属性窗口
+	// 鍒涘缓灞炴€х獥鍙�
 	CString strPropertiesWnd;
 	bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
 	ASSERT(bNameValid);
 	if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
 	{
-		TRACE0("未能创建“属性”窗口\n");
-		return FALSE; // 未能创建
+		TRACE0("鏈�兘鍒涘缓鈥滃睘鎬р€濈獥鍙�n");
+		return FALSE; // 鏈�兘鍒涘缓
 	}
 
 	SetDockingWindowIcons(theApp.m_bHiColorIcons);
@@ -278,8 +284,6 @@ void CMainFrame::SetDockingWindowIcons(BOOL bHiColorIcons)
 
 BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeCtrl& tree, CCalendarBar& calendar, int nInitialWidth)
 {
-	CWindowDC dc(NULL);
-
 	bar.SetMode2003();
 
 	BOOL bNameValid;
@@ -288,12 +292,12 @@ BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeC
 	ASSERT(bNameValid);
 	if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
 	{
-		return FALSE; // 未能创建
+		return FALSE; // 鏈�兘鍒涘缓
 	}
 
 	CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();
 
-	if (pOutlookBar == NULL)
+	if (pOutlookBar == nullptr)
 	{
 		ASSERT(FALSE);
 		return FALSE;
@@ -303,9 +307,7 @@ BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeC
 
 	static UINT uiPageID = 1;
 
-	DWORD dwPaneStyle = AFX_DEFAULT_TOOLBAR_STYLE | CBRS_FLOAT_MULTI;
-
-	// 可浮动,可自动隐藏,可调整大小,但不能关闭
+	// 鍙�诞鍔�紝鍙�嚜鍔ㄩ殣钘忥紝鍙�皟鏁村ぇ灏忥紝浣嗕笉鑳藉叧闂�
 	DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
 
 	CRect rectDummy(0, 0, 0, 0);
@@ -335,7 +337,7 @@ BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeC
 	return TRUE;
 }
 
-// CMainFrame 诊断
+// CMainFrame 璇婃柇
 
 #ifdef _DEBUG
 void CMainFrame::AssertValid() const
@@ -350,7 +352,7 @@ void CMainFrame::Dump(CDumpContext& dc) const
 #endif //_DEBUG
 
 
-// CMainFrame 消息处理程序
+// CMainFrame 娑堟伅澶勭悊绋嬪簭
 
 void CMainFrame::OnWindowManager()
 {
@@ -359,7 +361,7 @@ void CMainFrame::OnWindowManager()
 
 void CMainFrame::OnViewCustomize()
 {
-	CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* 扫描菜单*/);
+	CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* 鎵�弿鑿滃崟*/);
 	pDlgCust->EnableUserDefinedToolbars();
 	pDlgCust->Create();
 }
@@ -415,6 +417,16 @@ void CMainFrame::OnApplicationLook(UINT id)
 		CDockingManager::SetDockingMode(DT_SMART);
 		break;
 
+	case ID_VIEW_APPLOOK_VS_2008:
+		CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2008));
+		CDockingManager::SetDockingMode(DT_SMART);
+		break;
+
+	case ID_VIEW_APPLOOK_WINDOWS_7:
+		CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows7));
+		CDockingManager::SetDockingMode(DT_SMART);
+		break;
+
 	default:
 		switch (theApp.m_nAppLook)
 		{
@@ -439,7 +451,8 @@ void CMainFrame::OnApplicationLook(UINT id)
 		CDockingManager::SetDockingMode(DT_SMART);
 	}
 
-	RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
+	m_wndOutput.UpdateFonts();
+	RedrawWindow(nullptr, nullptr, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
 
 	theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook);
 }
@@ -449,9 +462,10 @@ void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI)
 	pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID);
 }
 
-BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) 
+
+BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
 {
-	// 基类将执行真正的工作
+	// 鍩虹被灏嗘墽琛岀湡姝g殑宸ヤ綔
 
 	if (!CMDIFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
 	{
@@ -459,7 +473,7 @@ BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParent
 	}
 
 
-	// 为所有用户工具栏启用自定义按钮
+	// 涓烘墍鏈夌敤鎴峰伐鍏锋爮鍚�敤鑷�畾涔夋寜閽�
 	BOOL bNameValid;
 	CString strCustomize;
 	bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
@@ -468,7 +482,7 @@ BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParent
 	for (int i = 0; i < iMaxUserToolbars; i ++)
 	{
 		CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i);
-		if (pUserToolbar != NULL)
+		if (pUserToolbar != nullptr)
 		{
 			pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
 		}
@@ -477,3 +491,9 @@ BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParent
 	return TRUE;
 }
 
+
+void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
+{
+	CMDIFrameWndEx::OnSettingChange(uFlags, lpszSection);
+	m_wndOutput.UpdateFonts();
+}

+ 12 - 11
CTSManager/CTSManager/MainFrm.h

@@ -1,5 +1,5 @@
-
-// MainFrm.h : CMainFrame ÀàµÄ½Ó¿Ú
+
+// MainFrm.h: CMainFrame 类的接�
 //
 
 #pragma once
@@ -13,27 +13,27 @@
 class COutlookBar : public CMFCOutlookBar
 {
 	virtual BOOL AllowShowOnPaneMenu() const { return TRUE; }
-	virtual void GetPaneName(CString& strName) const { BOOL bNameValid = strName.LoadString(IDS_OUTLOOKBAR); ASSERT(bNameValid); }
+	virtual void GetPaneName(CString& strName) const { BOOL bNameValid = strName.LoadString(IDS_OUTLOOKBAR); ASSERT(bNameValid); if (!bNameValid) strName.Empty(); }
 };
 
 class CMainFrame : public CMDIFrameWndEx
 {
 	DECLARE_DYNAMIC(CMainFrame)
 public:
-	CMainFrame();
+	CMainFrame() noexcept;
 
-// ÊôÐÔ
+// 特性
 public:
 
-// ²Ù×÷
+// �作
 public:
 
-// ÖØÐ´
+// �写
 public:
 	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
-	virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL);
+	virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = nullptr, CCreateContext* pContext = nullptr);
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~CMainFrame();
 #ifdef _DEBUG
@@ -41,7 +41,7 @@ public:
 	virtual void Dump(CDumpContext& dc) const;
 #endif
 
-protected:  // ¿Ø¼þÌõǶÈë³ÉÔ±
+protected:  // 控件�嵌入�员
 	CMFCMenuBar       m_wndMenuBar;
 	CMFCToolBar       m_wndToolBar;
 	CMFCStatusBar     m_wndStatusBar;
@@ -54,7 +54,7 @@ protected:  // 
 	CMFCShellTreeCtrl m_wndTree;
 	CCalendarBar      m_wndCalendar;
 
-// Éú³ÉµÄÏûÏ¢Ó³É亯Êý
+// 生�的消�映射函数
 protected:
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 	afx_msg void OnWindowManager();
@@ -62,6 +62,7 @@ protected:
 	afx_msg LRESULT OnToolbarCreateNew(WPARAM wp, LPARAM lp);
 	afx_msg void OnApplicationLook(UINT id);
 	afx_msg void OnUpdateApplicationLook(CCmdUI* pCmdUI);
+	afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
 	DECLARE_MESSAGE_MAP()
 
 	BOOL CreateDockingWindows();

+ 38 - 36
CTSManager/CTSManager/OutputWnd.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+锘�
+#include "pch.h"
+#include "framework.h"
 
 #include "OutputWnd.h"
 #include "Resource.h"
@@ -14,7 +15,7 @@ static char THIS_FILE[] = __FILE__;
 /////////////////////////////////////////////////////////////////////////////
 // COutputBar
 
-COutputWnd::COutputWnd()
+COutputWnd::COutputWnd() noexcept
 {
 }
 
@@ -32,37 +33,33 @@ int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	if (CDockablePane::OnCreate(lpCreateStruct) == -1)
 		return -1;
 
-	m_Font.CreateStockObject(DEFAULT_GUI_FONT);
-
 	CRect rectDummy;
 	rectDummy.SetRectEmpty();
 
-	// 创建选项卡窗口:
+	// 鍒涘缓閫夐」鍗$獥鍙�: 
 	if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, 1))
 	{
-		TRACE0("未能创建输出选项卡窗口\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓杈撳嚭閫夐」鍗$獥鍙�n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
-	// 创建输出窗格:
+	// 鍒涘缓杈撳嚭绐楁牸: 
 	const DWORD dwStyle = LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL;
 
 	if (!m_wndOutputBuild.Create(dwStyle, rectDummy, &m_wndTabs, 2) ||
 		!m_wndOutputDebug.Create(dwStyle, rectDummy, &m_wndTabs, 3) ||
 		!m_wndOutputFind.Create(dwStyle, rectDummy, &m_wndTabs, 4))
 	{
-		TRACE0("未能创建输出窗口\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓杈撳嚭绐楀彛\n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
-	m_wndOutputBuild.SetFont(&m_Font);
-	m_wndOutputDebug.SetFont(&m_Font);
-	m_wndOutputFind.SetFont(&m_Font);
+	UpdateFonts();
 
 	CString strTabName;
 	BOOL bNameValid;
 
-	// 将列表窗口附加到选项卡:
+	// 灏嗗垪琛ㄧ獥鍙i檮鍔犲埌閫夐」鍗�: 
 	bNameValid = strTabName.LoadString(IDS_BUILD_TAB);
 	ASSERT(bNameValid);
 	m_wndTabs.AddTab(&m_wndOutputBuild, strTabName, (UINT)0);
@@ -73,7 +70,7 @@ int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	ASSERT(bNameValid);
 	m_wndTabs.AddTab(&m_wndOutputFind, strTabName, (UINT)2);
 
-	// 使用一些虚拟文本填写输出选项卡(无需复杂数据)
+	// 浣跨敤涓€浜涜櫄鎷熸枃鏈�~鍐欒緭鍑洪€夐」鍗�(鏃犻渶澶嶆潅鏁版嵁)
 	FillBuildWindow();
 	FillDebugWindow();
 	FillFindWindow();
@@ -85,14 +82,14 @@ void COutputWnd::OnSize(UINT nType, int cx, int cy)
 {
 	CDockablePane::OnSize(nType, cx, cy);
 
-	// 选项卡控件应覆盖整个工作区:
-	m_wndTabs.SetWindowPos (NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
+	// 閫夐」鍗℃帶浠跺簲瑕嗙洊鏁翠釜宸ヤ綔鍖�: 
+	m_wndTabs.SetWindowPos (nullptr, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
 }
 
 void COutputWnd::AdjustHorzScroll(CListBox& wndListBox)
 {
 	CClientDC dc(this);
-	CFont* pOldFont = dc.SelectObject(&m_Font);
+	CFont* pOldFont = dc.SelectObject(&afxGlobalData.fontRegular);
 
 	int cxExtentMax = 0;
 
@@ -101,7 +98,7 @@ void COutputWnd::AdjustHorzScroll(CListBox& wndListBox)
 		CString strItem;
 		wndListBox.GetText(i, strItem);
 
-		cxExtentMax = max(cxExtentMax, dc.GetTextExtent(strItem).cx);
+		cxExtentMax = max(cxExtentMax, (int)dc.GetTextExtent(strItem).cx);
 	}
 
 	wndListBox.SetHorizontalExtent(cxExtentMax);
@@ -110,29 +107,36 @@ void COutputWnd::AdjustHorzScroll(CListBox& wndListBox)
 
 void COutputWnd::FillBuildWindow()
 {
-	m_wndOutputBuild.AddString(_T("生成输出正显示在此处。"));
-	m_wndOutputBuild.AddString(_T("输出正显示在列表视图的行中"));
-	m_wndOutputBuild.AddString(_T("但您可以根据需要更改其显示方式..."));
+	m_wndOutputBuild.AddString(_T("鐢熸垚杈撳嚭姝f樉绀哄湪姝ゅ�銆�"));
+	m_wndOutputBuild.AddString(_T("杈撳嚭姝f樉绀哄湪鍒楄〃瑙嗗浘鐨勮�涓�"));
+	m_wndOutputBuild.AddString(_T("浣嗘偍鍙�互鏍规嵁闇€瑕佹洿鏀瑰叾鏄剧ず鏂瑰紡..."));
 }
 
 void COutputWnd::FillDebugWindow()
 {
-	m_wndOutputDebug.AddString(_T("调试输出正显示在此处。"));
-	m_wndOutputDebug.AddString(_T("输出正显示在列表视图的行中"));
-	m_wndOutputDebug.AddString(_T("但您可以根据需要更改其显示方式..."));
+	m_wndOutputDebug.AddString(_T("璋冭瘯杈撳嚭姝f樉绀哄湪姝ゅ�銆�"));
+	m_wndOutputDebug.AddString(_T("杈撳嚭姝f樉绀哄湪鍒楄〃瑙嗗浘鐨勮�涓�"));
+	m_wndOutputDebug.AddString(_T("浣嗘偍鍙�互鏍规嵁闇€瑕佹洿鏀瑰叾鏄剧ず鏂瑰紡..."));
 }
 
 void COutputWnd::FillFindWindow()
 {
-	m_wndOutputFind.AddString(_T("查找输出正显示在此处。"));
-	m_wndOutputFind.AddString(_T("输出正显示在列表视图的行中"));
-	m_wndOutputFind.AddString(_T("但您可以根据需要更改其显示方式..."));
+	m_wndOutputFind.AddString(_T("鏌ユ壘杈撳嚭姝f樉绀哄湪姝ゅ�銆�"));
+	m_wndOutputFind.AddString(_T("杈撳嚭姝f樉绀哄湪鍒楄〃瑙嗗浘鐨勮�涓�"));
+	m_wndOutputFind.AddString(_T("浣嗘偍鍙�互鏍规嵁闇€瑕佹洿鏀瑰叾鏄剧ず鏂瑰紡..."));
+}
+
+void COutputWnd::UpdateFonts()
+{
+	m_wndOutputBuild.SetFont(&afxGlobalData.fontRegular);
+	m_wndOutputDebug.SetFont(&afxGlobalData.fontRegular);
+	m_wndOutputFind.SetFont(&afxGlobalData.fontRegular);
 }
 
 /////////////////////////////////////////////////////////////////////////////
 // COutputList1
 
-COutputList::COutputList()
+COutputList::COutputList() noexcept
 {
 }
 
@@ -148,7 +152,7 @@ BEGIN_MESSAGE_MAP(COutputList, CListBox)
 	ON_WM_WINDOWPOSCHANGING()
 END_MESSAGE_MAP()
 /////////////////////////////////////////////////////////////////////////////
-// COutputList 消息处理程序
+// COutputList 娑堟伅澶勭悊绋嬪簭
 
 void COutputList::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
 {
@@ -173,12 +177,12 @@ void COutputList::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
 
 void COutputList::OnEditCopy()
 {
-	MessageBox(_T("复制输出"));
+	MessageBox(_T("澶嶅埗杈撳嚭"));
 }
 
 void COutputList::OnEditClear()
 {
-	MessageBox(_T("清除输出"));
+	MessageBox(_T("娓呴櫎杈撳嚭"));
 }
 
 void COutputList::OnViewOutput()
@@ -186,7 +190,7 @@ void COutputList::OnViewOutput()
 	CDockablePane* pParentBar = DYNAMIC_DOWNCAST(CDockablePane, GetOwner());
 	CMDIFrameWndEx* pMainFrame = DYNAMIC_DOWNCAST(CMDIFrameWndEx, GetTopLevelFrame());
 
-	if (pMainFrame != NULL && pParentBar != NULL)
+	if (pMainFrame != nullptr && pParentBar != nullptr)
 	{
 		pMainFrame->SetFocus();
 		pMainFrame->ShowPane(pParentBar, FALSE, FALSE, FALSE);
@@ -194,5 +198,3 @@ void COutputList::OnViewOutput()
 
 	}
 }
-
-

+ 11 - 11
CTSManager/CTSManager/OutputWnd.h

@@ -1,16 +1,16 @@
-
+
 #pragma once
 
 /////////////////////////////////////////////////////////////////////////////
-// COutputList ´°¿Ú
+// COutputList 窗�
 
 class COutputList : public CListBox
 {
-// ¹¹Ôì
+// 构造
 public:
-	COutputList();
+	COutputList() noexcept;
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~COutputList();
 
@@ -25,14 +25,14 @@ protected:
 
 class COutputWnd : public CDockablePane
 {
-// ¹¹Ôì
+// 构造
 public:
-	COutputWnd();
+	COutputWnd() noexcept;
 
-// ÊôÐÔ
-protected:
-	CFont m_Font;
+	void UpdateFonts();
 
+// 特性
+protected:
 	CMFCTabCtrl	m_wndTabs;
 
 	COutputList m_wndOutputBuild;
@@ -46,7 +46,7 @@ protected:
 
 	void AdjustHorzScroll(CListBox& wndListBox);
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~COutputWnd();
 

+ 61 - 57
CTSManager/CTSManager/PropertiesWnd.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+锘�
+#include "pch.h"
+#include "framework.h"
 
 #include "PropertiesWnd.h"
 #include "Resource.h"
@@ -15,8 +16,9 @@ static char THIS_FILE[]=__FILE__;
 /////////////////////////////////////////////////////////////////////////////
 // CResourceViewBar
 
-CPropertiesWnd::CPropertiesWnd()
+CPropertiesWnd::CPropertiesWnd() noexcept
 {
+	m_nComboHeight = 0;
 }
 
 CPropertiesWnd::~CPropertiesWnd()
@@ -39,26 +41,23 @@ BEGIN_MESSAGE_MAP(CPropertiesWnd, CDockablePane)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
-// CResourceViewBar 消息处理程序
+// CResourceViewBar 娑堟伅澶勭悊绋嬪簭
 
 void CPropertiesWnd::AdjustLayout()
 {
-	if (GetSafeHwnd() == NULL)
+	if (GetSafeHwnd () == nullptr || (AfxGetMainWnd() != nullptr && AfxGetMainWnd()->IsIconic()))
 	{
 		return;
 	}
 
-	CRect rectClient,rectCombo;
+	CRect rectClient;
 	GetClientRect(rectClient);
 
-	m_wndObjectCombo.GetWindowRect(&rectCombo);
-
-	int cyCmb = rectCombo.Size().cy;
 	int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy;
 
-	m_wndObjectCombo.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), 200, SWP_NOACTIVATE | SWP_NOZORDER);
-	m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
-	m_wndPropList.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb + cyTlb, rectClient.Width(), rectClient.Height() -(cyCmb+cyTlb), SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndObjectCombo.SetWindowPos(nullptr, rectClient.left, rectClient.top, rectClient.Width(), m_nComboHeight, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndToolBar.SetWindowPos(nullptr, rectClient.left, rectClient.top + m_nComboHeight, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
+	m_wndPropList.SetWindowPos(nullptr, rectClient.left, rectClient.top + m_nComboHeight + cyTlb, rectClient.Width(), rectClient.Height() -(m_nComboHeight+cyTlb), SWP_NOACTIVATE | SWP_NOZORDER);
 }
 
 int CPropertiesWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
@@ -69,38 +68,42 @@ int CPropertiesWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
 	CRect rectDummy;
 	rectDummy.SetRectEmpty();
 
-	// 创建组合:
+	// 鍒涘缓缁勫悎: 
 	const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
 
 	if (!m_wndObjectCombo.Create(dwViewStyle, rectDummy, this, 1))
 	{
-		TRACE0("未能创建属性组合 \n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓灞炴€х粍鍚� \n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
-	m_wndObjectCombo.AddString(_T("应用程序"));
-	m_wndObjectCombo.AddString(_T("属性窗口"));
-	m_wndObjectCombo.SetFont(CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)));
+	m_wndObjectCombo.AddString(_T("搴旂敤绋嬪簭"));
+	m_wndObjectCombo.AddString(_T("灞炴€х獥鍙�"));
 	m_wndObjectCombo.SetCurSel(0);
 
+	CRect rectCombo;
+	m_wndObjectCombo.GetClientRect (&rectCombo);
+
+	m_nComboHeight = rectCombo.Height();
+
 	if (!m_wndPropList.Create(WS_VISIBLE | WS_CHILD, rectDummy, this, 2))
 	{
-		TRACE0("未能创建属性网格\n");
-		return -1;      // 未能创建
+		TRACE0("鏈�兘鍒涘缓灞炴€х綉鏍糪n");
+		return -1;      // 鏈�兘鍒涘缓
 	}
 
 	InitPropList();
 
 	m_wndToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_PROPERTIES);
-	m_wndToolBar.LoadToolBar(IDR_PROPERTIES, 0, 0, TRUE /* 已锁定*/);
+	m_wndToolBar.LoadToolBar(IDR_PROPERTIES, 0, 0, TRUE /* 宸查攣瀹�*/);
 	m_wndToolBar.CleanUpLockedImages();
-	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_PROPERTIES_HC : IDR_PROPERTIES, 0, 0, TRUE /* 锁定*/);
+	m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_PROPERTIES_HC : IDR_PROPERTIES, 0, 0, TRUE /* 閿佸畾*/);
 
 	m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
 	m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));
 	m_wndToolBar.SetOwner(this);
 
-	// 所有命令将通过此控件路由,而不是通过主框架路由:
+	// 鎵€鏈夊懡浠ゅ皢閫氳繃姝ゆ帶浠惰矾鐢憋紝鑰屼笉鏄�€氳繃涓绘�鏋惰矾鐢�: 
 	m_wndToolBar.SetRouteCommandsViaFrame(FALSE);
 
 	AdjustLayout();
@@ -118,7 +121,7 @@ void CPropertiesWnd::OnExpandAllProperties()
 	m_wndPropList.ExpandAll();
 }
 
-void CPropertiesWnd::OnUpdateExpandAllProperties(CCmdUI* pCmdUI)
+void CPropertiesWnd::OnUpdateExpandAllProperties(CCmdUI* /* pCmdUI */)
 {
 }
 
@@ -134,22 +137,22 @@ void CPropertiesWnd::OnUpdateSortProperties(CCmdUI* pCmdUI)
 
 void CPropertiesWnd::OnProperties1()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CPropertiesWnd::OnUpdateProperties1(CCmdUI* /*pCmdUI*/)
 {
-	// TODO: 在此处添加命令更新 UI 处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゆ洿鏂� UI 澶勭悊绋嬪簭浠g爜
 }
 
 void CPropertiesWnd::OnProperties2()
 {
-	// TODO: 在此处添加命令处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゅ�鐞嗙▼搴忎唬鐮�
 }
 
 void CPropertiesWnd::OnUpdateProperties2(CCmdUI* /*pCmdUI*/)
 {
-	// TODO: 在此处添加命令更新 UI 处理程序代码
+	// TODO: 鍦ㄦ�澶勬坊鍔犲懡浠ゆ洿鏂� UI 澶勭悊绋嬪簭浠g爜
 }
 
 void CPropertiesWnd::InitPropList()
@@ -161,75 +164,75 @@ void CPropertiesWnd::InitPropList()
 	m_wndPropList.SetVSDotNetLook();
 	m_wndPropList.MarkModifiedProperties();
 
-	CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("外观"));
+	CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("澶栬�"));
 
-	pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("三维外观"), (_variant_t) false, _T("指定窗口的字体不使用粗体,并且控件将使用三维边框")));
+	pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("涓夌淮澶栬�"), (_variant_t) false, _T("鎸囧畾绐楀彛鐨勫瓧浣撲笉浣跨敤绮椾綋锛屽苟涓旀帶浠跺皢浣跨敤涓夌淮杈规�")));
 
-	CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("边框"), _T("Dialog Frame"), _T("其中之一: 无(None)、细(Thin)、可调整大小(Resizable)、对话框外框(Dialog Frame)"));
-	pProp->AddOption(_T("None"));
-	pProp->AddOption(_T("Thin"));
-	pProp->AddOption(_T("Resizable"));
-	pProp->AddOption(_T("Dialog Frame"));
+	CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("杈规�"), _T("瀵硅瘽妗嗗�妗�"), _T("鍏朵腑涔嬩竴: 鈥滄棤鈥濄€佲€滅粏鈥濄€佲€滃彲璋冩暣澶у皬鈥濇垨鈥滃�璇濇�澶栨�鈥�"));
+	pProp->AddOption(_T("鏃�"));
+	pProp->AddOption(_T("缁�"));
+	pProp->AddOption(_T("鍙�皟鏁村ぇ灏�"));
+	pProp->AddOption(_T("瀵硅瘽妗嗗�妗�"));
 	pProp->AllowEdit(FALSE);
 
 	pGroup1->AddSubItem(pProp);
-	pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("标题"), (_variant_t) _T("关于"), _T("指定窗口标题栏中显示的文本")));
+	pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("鏍囬�"), (_variant_t) _T("鍏充簬"), _T("鎸囧畾绐楀彛鏍囬�鏍忎腑鏄剧ず鐨勬枃鏈�")));
 
 	m_wndPropList.AddProperty(pGroup1);
 
-	CMFCPropertyGridProperty* pSize = new CMFCPropertyGridProperty(_T("窗口大小"), 0, TRUE);
+	CMFCPropertyGridProperty* pSize = new CMFCPropertyGridProperty(_T("绐楀彛澶у皬"), 0, TRUE);
 
-	pProp = new CMFCPropertyGridProperty(_T("高度"), (_variant_t) 250l, _T("指定窗口的高度"));
+	pProp = new CMFCPropertyGridProperty(_T("楂樺害"), (_variant_t) 250l, _T("鎸囧畾绐楀彛鐨勯珮搴�"));
 	pProp->EnableSpinControl(TRUE, 50, 300);
 	pSize->AddSubItem(pProp);
 
-	pProp = new CMFCPropertyGridProperty( _T("宽度"), (_variant_t) 150l, _T("指定窗口的宽度"));
+	pProp = new CMFCPropertyGridProperty( _T("瀹藉害"), (_variant_t) 150l, _T("鎸囧畾绐楀彛鐨勫�搴�"));
 	pProp->EnableSpinControl(TRUE, 50, 200);
 	pSize->AddSubItem(pProp);
 
 	m_wndPropList.AddProperty(pSize);
 
-	CMFCPropertyGridProperty* pGroup2 = new CMFCPropertyGridProperty(_T("字体"));
+	CMFCPropertyGridProperty* pGroup2 = new CMFCPropertyGridProperty(_T("瀛椾綋"));
 
 	LOGFONT lf;
 	CFont* font = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
 	font->GetLogFont(&lf);
 
-	lstrcpy(lf.lfFaceName, _T("宋体, Arial"));
+	_tcscpy_s(lf.lfFaceName, _T("瀹嬩綋, Arial"));
 
-	pGroup2->AddSubItem(new CMFCPropertyGridFontProperty(_T("字体"), lf, CF_EFFECTS | CF_SCREENFONTS, _T("指定窗口的默认字体")));
-	pGroup2->AddSubItem(new CMFCPropertyGridProperty(_T("使用系统字体"), (_variant_t) true, _T("指定窗口使用“MS Shell Dlg”字体")));
+	pGroup2->AddSubItem(new CMFCPropertyGridFontProperty(_T("瀛椾綋"), lf, CF_EFFECTS | CF_SCREENFONTS, _T("鎸囧畾绐楀彛鐨勯粯璁ゅ瓧浣�")));
+	pGroup2->AddSubItem(new CMFCPropertyGridProperty(_T("浣跨敤绯荤粺瀛椾綋"), (_variant_t) true, _T("鎸囧畾绐楀彛浣跨敤鈥淢S Shell Dlg鈥濆瓧浣�")));
 
 	m_wndPropList.AddProperty(pGroup2);
 
-	CMFCPropertyGridProperty* pGroup3 = new CMFCPropertyGridProperty(_T("杂项"));
-	pProp = new CMFCPropertyGridProperty(_T("(名称)"), _T("应用程序"));
+	CMFCPropertyGridProperty* pGroup3 = new CMFCPropertyGridProperty(_T("鏉傞」"));
+	pProp = new CMFCPropertyGridProperty(_T("(鍚嶇О)"), _T("搴旂敤绋嬪簭"));
 	pProp->Enable(FALSE);
 	pGroup3->AddSubItem(pProp);
 
-	CMFCPropertyGridColorProperty* pColorProp = new CMFCPropertyGridColorProperty(_T("窗口颜色"), RGB(210, 192, 254), NULL, _T("指定默认的窗口颜色"));
-	pColorProp->EnableOtherButton(_T("其他..."));
-	pColorProp->EnableAutomaticButton(_T("默认"), ::GetSysColor(COLOR_3DFACE));
+	CMFCPropertyGridColorProperty* pColorProp = new CMFCPropertyGridColorProperty(_T("绐楀彛棰滆壊"), RGB(210, 192, 254), nullptr, _T("鎸囧畾榛樿�鐨勭獥鍙i�鑹�"));
+	pColorProp->EnableOtherButton(_T("鍏朵粬..."));
+	pColorProp->EnableAutomaticButton(_T("榛樿�"), ::GetSysColor(COLOR_3DFACE));
 	pGroup3->AddSubItem(pColorProp);
 
-	static TCHAR BASED_CODE szFilter[] = _T("图标文件(*.ico)|*.ico|所有文件(*.*)|*.*||");
-	pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("图标"), TRUE, _T(""), _T("ico"), 0, szFilter, _T("指定窗口图标")));
+	static const TCHAR szFilter[] = _T("鍥炬爣鏂囦欢(*.ico)|*.ico|鎵€鏈夋枃浠�(*.*)|*.*||");
+	pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("鍥炬爣"), TRUE, _T(""), _T("ico"), 0, szFilter, _T("鎸囧畾绐楀彛鍥炬爣")));
 
-	pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("文件夹"), _T("c:\\")));
+	pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("鏂囦欢澶�"), _T("c:\\")));
 
 	m_wndPropList.AddProperty(pGroup3);
 
-	CMFCPropertyGridProperty* pGroup4 = new CMFCPropertyGridProperty(_T("层次结构"));
+	CMFCPropertyGridProperty* pGroup4 = new CMFCPropertyGridProperty(_T("灞傛�缁撴瀯"));
 
-	CMFCPropertyGridProperty* pGroup41 = new CMFCPropertyGridProperty(_T("第一个子级"));
+	CMFCPropertyGridProperty* pGroup41 = new CMFCPropertyGridProperty(_T("绗�竴涓�瓙绾�"));
 	pGroup4->AddSubItem(pGroup41);
 
-	CMFCPropertyGridProperty* pGroup411 = new CMFCPropertyGridProperty(_T("第二个子级"));
+	CMFCPropertyGridProperty* pGroup411 = new CMFCPropertyGridProperty(_T("绗�簩涓�瓙绾�"));
 	pGroup41->AddSubItem(pGroup411);
 
-	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("项 1"), (_variant_t) _T("值 1"), _T("此为说明")));
-	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("项 2"), (_variant_t) _T("值 2"), _T("此为说明")));
-	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("项 3"), (_variant_t) _T("值 3"), _T("此为说明")));
+	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("椤� 1"), (_variant_t) _T("鍊� 1"), _T("姝や负璇存槑")));
+	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("椤� 2"), (_variant_t) _T("鍊� 2"), _T("姝や负璇存槑")));
+	pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("椤� 3"), (_variant_t) _T("鍊� 3"), _T("姝や负璇存槑")));
 
 	pGroup4->Expand(FALSE);
 	m_wndPropList.AddProperty(pGroup4);
@@ -266,4 +269,5 @@ void CPropertiesWnd::SetPropListFont()
 	m_fntPropList.CreateFontIndirect(&lf);
 
 	m_wndPropList.SetFont(&m_fntPropList);
+	m_wndObjectCombo.SetFont(&m_fntPropList);
 }

+ 7 - 5
CTSManager/CTSManager/PropertiesWnd.h

@@ -1,4 +1,4 @@
-
+
 #pragma once
 
 class CPropertiesToolBar : public CMFCToolBar
@@ -14,13 +14,13 @@ public:
 
 class CPropertiesWnd : public CDockablePane
 {
-// ¹¹Ôì
+// 构造
 public:
-	CPropertiesWnd();
+	CPropertiesWnd() noexcept;
 
 	void AdjustLayout();
 
-// ÊôÐÔ
+// 特性
 public:
 	void SetVSDotNetLook(BOOL bSet)
 	{
@@ -34,7 +34,7 @@ protected:
 	CPropertiesToolBar m_wndToolBar;
 	CMFCPropertyGridCtrl m_wndPropList;
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~CPropertiesWnd();
 
@@ -56,5 +56,7 @@ protected:
 
 	void InitPropList();
 	void SetPropListFont();
+
+	int m_nComboHeight;
 };
 

+ 0 - 96
CTSManager/CTSManager/ReadMe.txt

@@ -1,96 +0,0 @@
-================================================================================
-    MICROSOFT 基础类库: CTSManager 项目概述
-===============================================================================
-
-应用程序向导已为您创建此 CTSManager 应用程序。此应用程序不仅演示使用 Microsoft 基础类的基本知识,而且可作为编写应用程序的起点。
-
-此文件包含组成 CTSManager 应用程序的各个文件的内容摘要。
-
-CTSManager.vcproj
-    这是使用应用程序向导生成的 VC++ 项目的主项目文件。
-    它包含有关生成文件的 Visual C++ 版本的信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
-
-CTSManager.h
-    这是应用程序的主要头文件。它包括其他项目特定的头文件(包括 Resource.h),并声明 CCTSManagerApp 应用程序类。
-
-CTSManager.cpp
-    这是包含应用程序类 CCTSManagerApp 的主要应用程序源文件。
-
-CTSManager.rc
-    这是程序使用的所有 Microsoft Windows 资源的列表。它包括 RES 子目录中存储的图标、位图和光标。此文件可以直接在 Microsoft Visual C++ 中进行编辑。项目资源位于 2052 中。
-
-res\CTSManager.ico
-    这是用作应用程序图标的图标文件。此图标包括在主要资源文件 CTSManager.rc 中。
-
-res\CTSManager.rc2
-    此文件包含不是由 Microsoft Visual C++ 编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。
-
-/////////////////////////////////////////////////////////////////////////////
-
-对于主框架窗口:
-    项目包含标准 MFC 界面。
-
-MainFrm.h, MainFrm.cpp
-    这些文件包含框架类 CMainFrame,该类派生自
-    CMDIFrameWnd 并控制所有 MDI 框架功能。
-
-res\Toolbar.bmp
-    此位图文件用于为工具栏创建平铺图像。
-    初始工具栏和状态栏是在 CMainFrame 类中构造的。使用资源编辑器编辑此工具栏位图,并更新 CTSManager.rc 中的 IDR_MAINFRAME TOOLBAR 数组以添加工具栏按钮。
-/////////////////////////////////////////////////////////////////////////////
-
-对于子框架窗口:
-
-ChildFrm.h, ChildFrm.cpp
-    这些文件定义并实现 CChildFrame 类,该类支持 MDI 应用程序中的子窗口。
-
-/////////////////////////////////////////////////////////////////////////////
-
-应用程序向导创建一个文档类型和一个视图:
-
-CTSManagerDoc.h,CTSManagerDoc.cpp - 文档
-    这些文件包含 CCTSManagerDoc 类。编辑这些文件可以添加特殊文档数据并可实现文件保存和加载(通过 CCTSManagerDoc::Serialize)。
-
-CTSManagerView.h,CTSManagerView.cpp - 文档的视图
-    这些文件包含 CCTSManagerView 类。
-    CCTSManagerView 对象用于查看 CCTSManagerDoc 对象。
-
-res\CTSManagerDoc.ico
-    这是图标文件,它用作 CCTSManagerDoc 类的 MDI 子窗口的图标。此图标包括在主要资源文件 CTSManager.rc 中。
-
-
-
-
-/////////////////////////////////////////////////////////////////////////////
-
-其他功能:
-
-ActiveX 控件
-    应用程序包括对使用 ActiveX 控件的支持。
-
-打印及打印预览支持
-    应用程序向导已通过从 MFC 库调用 CView 类中的成员函数,生成了用于处理打印、打印设置和打印预览命令的代码。
-
-/////////////////////////////////////////////////////////////////////////////
-
-其他标准文件:
-
-StdAfx.h, StdAfx.cpp
-    这些文件用于生成名为 CTSManager.pch 的预编译头(PCH)文件和名为 StdAfx.obj 的预编译类型文件。
-
-Resource.h
-    这是标准头文件,它定义新资源 ID。
-    Microsoft Visual C++ 将读取并更新此文件。
-
-CTSManager.manifest
-	Windows XP 使用应用程序清单文件描述应用程序	对特定版本并行程序集的依赖性。加载程序使用此	信息从程序集缓存加载相应程序集或	从应用程序加载私有信息。应用程序清单可能作为	与应用程序可执行文件安装在同一文件夹中的外部 .manifest 文件包括在内以便重新发布,	也可能以资源的形式包括在该可执行文件中。
-/////////////////////////////////////////////////////////////////////////////
-
-其他注释:
-
-应用程序向导使用“TODO:”指示应添加或自定义的源代码部分。
-
-如果应用程序在共享 DLL 中使用 MFC,则将需要重新发布 MFC DLL。如果应用程序所用与操作系统的区域设置不同,则也将必须重新发布对应的本地化资源 MFC90XXX.DLL。
-有关这两个主题的详细信息,请参阅 MSDN 文档中有关重新发布 Visual C++ 应用程序的部分。
-
-/////////////////////////////////////////////////////////////////////////////

+ 11 - 10
CTSManager/CTSManager/Resource.h

@@ -1,6 +1,6 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by CTSManager.rc
+//{{NO_DEPENDENCIES}}
+// 生�的 Microsoft Visual C++ 包�文件。
+// 由 CTSManager.rc 使用
 //
 #define IDD_ABOUTBOX				100
 #define IDP_OLE_INIT_FAILED			100
@@ -16,7 +16,6 @@
 #define IDR_MAINFRAME_256			129
 #define IDR_CTSManagerTYPE				130
 #define ID_WINDOW_MANAGER			131
-#define IDS_WINDOWS_MANAGER			132
 #define ID_VIEW_FILEVIEW			133
 #define ID_VIEW_CLASSVIEW			134
 #define ID_PROPERTIES				135
@@ -76,15 +75,17 @@
 #define IDB_PAGES_SMALL_HC			191
 #define IDR_THEME_MENU				200
 #define ID_SET_STYLE				201
-#define ID_VIEW_APPLOOK_WIN_2000	210
-#define ID_VIEW_APPLOOK_OFF_XP		211
-#define ID_VIEW_APPLOOK_WIN_XP		212
-#define ID_VIEW_APPLOOK_OFF_2003	213
-#define ID_VIEW_APPLOOK_VS_2005		214
+#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
@@ -96,7 +97,7 @@
 #define IDS_EXPLORER				305
 #define IDS_EDIT_MENU				306
 
-// жÔÏóµÄÏÂÒ»×éĬÈÏÖµ
+// 新对象的下一组默认值
 //
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS

+ 7 - 6
CTSManager/CTSManager/ViewTree.cpp

@@ -1,5 +1,6 @@
-
-#include "stdafx.h"
+
+#include "pch.h"
+#include "framework.h"
 #include "ViewTree.h"
 
 #ifdef _DEBUG
@@ -11,7 +12,7 @@ static char THIS_FILE[] = __FILE__;
 /////////////////////////////////////////////////////////////////////////////
 // CViewTree
 
-CViewTree::CViewTree()
+CViewTree::CViewTree() noexcept
 {
 }
 
@@ -23,16 +24,16 @@ BEGIN_MESSAGE_MAP(CViewTree, CTreeCtrl)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
-// CViewTree ÏûÏ¢´¦Àí³ÌÐò
+// CViewTree 消�处�程�
 
 BOOL CViewTree::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
 {
 	BOOL bRes = CTreeCtrl::OnNotify(wParam, lParam, pResult);
 
 	NMHDR* pNMHDR = (NMHDR*)lParam;
-	ASSERT(pNMHDR != NULL);
+	ASSERT(pNMHDR != nullptr);
 
-	if (pNMHDR && pNMHDR->code == TTN_SHOW && GetToolTips() != NULL)
+	if (pNMHDR && pNMHDR->code == TTN_SHOW && GetToolTips() != nullptr)
 	{
 		GetToolTips()->SetWindowPos(&wndTop, -1, -1, -1, -1, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOSIZE);
 	}

+ 6 - 6
CTSManager/CTSManager/ViewTree.h

@@ -1,20 +1,20 @@
-
+
 #pragma once
 
 /////////////////////////////////////////////////////////////////////////////
-// CViewTree ´°¿Ú
+// CViewTree 窗�
 
 class CViewTree : public CTreeCtrl
 {
-// ¹¹Ôì
+// 构造
 public:
-	CViewTree();
+	CViewTree() noexcept;
 
-// ÖØÐ´
+// �写
 protected:
 	virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
 
-// ʵÏÖ
+// 实现
 public:
 	virtual ~CViewTree();
 

+ 49 - 0
CTSManager/CTSManager/framework.h

@@ -0,0 +1,49 @@
+#pragma once
+
+#ifndef VC_EXTRALEAN
+#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
+#endif
+
+#include "targetver.h"
+
+#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的
+
+// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息
+#define _AFX_ALL_WARNINGS
+
+#include <afxwin.h>         // MFC 核心组件和标准组件
+#include <afxext.h>         // MFC 扩展
+
+
+#include <afxdisp.h>        // MFC 自动化类
+
+
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#include <afxdtctl.h>           // MFC 对 Internet Explorer 4 公共控件的支持
+#endif
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>             // MFC 对 Windows 公共控件的支持
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+#include <afxcontrolbars.h>     // MFC 支持功能区和控制条
+
+
+
+
+
+
+
+
+
+#ifdef _UNICODE
+#if defined _M_IX86
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#elif defined _M_X64
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#else
+#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
+#endif
+#endif
+
+

+ 5 - 0
CTSManager/CTSManager/pch.cpp

@@ -0,0 +1,5 @@
+// pch.cpp: 与预编译标头对应的源文件
+
+#include "pch.h"
+
+// 当使用预编译的头时,需要使用此源文件,编译才能成功。

+ 15 - 0
CTSManager/CTSManager/pch.h

@@ -0,0 +1,15 @@
+// pch.h: 这是预编译标头文件。
+// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
+// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
+// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
+// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
+
+#ifndef PCH_H
+#define PCH_H
+
+// 添加要在此处预编译的标头
+#include "framework.h"
+
+#include "mysql.h"
+
+#endif //PCH_H

BIN
CTSManager/CTSManager/res/CTSManager.rc2


BIN
CTSManager/CTSManager/res/explorer.bmp


BIN
CTSManager/CTSManager/res/explorer_hc.bmp


BIN
CTSManager/CTSManager/res/menuimages.bmp


BIN
CTSManager/CTSManager/res/menuimages_hc.bmp


BIN
CTSManager/CTSManager/res/properties.bmp


BIN
CTSManager/CTSManager/res/properties_hc.bmp


BIN
CTSManager/CTSManager/res/properties_wnd.ico


BIN
CTSManager/CTSManager/res/properties_wnd_hc.ico


BIN
CTSManager/CTSManager/res/sort.bmp


BIN
CTSManager/CTSManager/res/sort_hc.bmp


+ 0 - 0
CTSManager/CTSManager/UserImages.bmp → CTSManager/CTSManager/res/userimages.bmp


+ 0 - 8
CTSManager/CTSManager/stdafx.cpp

@@ -1,8 +0,0 @@
-
-// stdafx.cpp : 只包括标准包含文件的源文件
-// CTSManager.pch 将作为预编译头
-// stdafx.obj 将包含预编译类型信息
-
-#include "stdafx.h"
-
-

+ 0 - 60
CTSManager/CTSManager/stdafx.h

@@ -1,60 +0,0 @@
-
-// stdafx.h : 标准系统包含文件的包含文件,
-// 或是经常使用但不常更改的
-// 特定于项目的包含文件
-
-#pragma once
-
-#ifndef _SECURE_ATL
-#define _SECURE_ATL 1
-#endif
-
-#ifndef VC_EXTRALEAN
-#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
-#endif
-
-#include "targetver.h"
-
-#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的
-
-// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏
-#define _AFX_ALL_WARNINGS
-
-#include <afxwin.h>         // MFC 核心组件和标准组件
-#include <afxext.h>         // MFC 扩展
-
-
-#include <afxdisp.h>        // MFC 自动化类
-
-
-
-#ifndef _AFX_NO_OLE_SUPPORT
-#include <afxdtctl.h>           // MFC 对 Internet Explorer 4 公共控件的支持
-#endif
-#ifndef _AFX_NO_AFXCMN_SUPPORT
-#include <afxcmn.h>             // MFC 对 Windows 公共控件的支持
-#endif // _AFX_NO_AFXCMN_SUPPORT
-
-#include <afxcontrolbars.h>     // 功能区和控件条的 MFC 支持
-
-
-
-
-
-
-
-
-
-#ifdef _UNICODE
-#if defined _M_IX86
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#elif defined _M_IA64
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#elif defined _M_X64
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#else
-#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#endif
-#endif
-
-#include "mysql.h"

+ 5 - 23
CTSManager/CTSManager/targetver.h

@@ -1,26 +1,8 @@
+锘�#pragma once
 
-#pragma once
+// 鍖呮嫭 SDKDDKVer.h 灏嗗畾涔夊彲鐢ㄧ殑鏈€楂樼増鏈�殑 Windows 骞冲彴銆�
 
-// 以下宏定义要求的最低平台。要求的最低平台
-// 是具有运行应用程序所需功能的 Windows、Internet Explorer 等产品的
-// 最早版本。通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以
-// 正常工作。
-
-// 如果必须要针对低于以下指定版本的平台,请修改下列定义。
-// 有关不同平台对应值的最新信息,请参考 MSDN。
-#ifndef WINVER                          // 指定要求的最低平台是 Windows Vista。
-#define WINVER 0x0600           // 将此值更改为相应的值,以适用于 Windows 的其他版本。
-#endif
-
-#ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows Vista。
-#define _WIN32_WINNT 0x0600     // 将此值更改为相应的值,以适用于 Windows 的其他版本。
-#endif
-
-#ifndef _WIN32_WINDOWS          // 指定要求的最低平台是 Windows 98。
-#define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。
-#endif
-
-#ifndef _WIN32_IE                       // 指定要求的最低平台是 Internet Explorer 7.0。
-#define _WIN32_IE 0x0700        // 将此值更改为相应的值,以适用于 IE 的其他版本。
-#endif
+// 濡傛灉瑕佷负浠ュ墠鐨� Windows 骞冲彴鐢熸垚搴旂敤绋嬪簭锛岃�鍖呮嫭 WinSDKVer.h锛屽苟灏�
+// 灏� _WIN32_WINNT 瀹忚�缃�负瑕佹敮鎸佺殑骞冲彴锛岀劧鍚庡啀鍖呮嫭 SDKDDKVer.h銆�
 
+#include <SDKDDKVer.h>