Sfoglia il codice sorgente

完成Tab标签页基本功能。

Jeff 3 anni fa
parent
commit
7eb51be15f

+ 73 - 6
Source/OGCAssistTool/OGCAssistTool/OGCAssistTool.rc

@@ -88,15 +88,13 @@ BEGIN
     DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
 END
 
-IDD_OGCASSISTTOOL_DIALOG DIALOGEX 0, 0, 320, 200
+IDD_OGCASSISTTOOL_DIALOG DIALOGEX 0, 0, 639, 360
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "OGCAssistTool"
 FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
-    DEFPUSHBUTTON   "确定",IDOK,209,179,50,14
-    PUSHBUTTON      "取消",IDCANCEL,263,179,50,14
-    CTEXT           "TODO: 在此放置对话框控件。",IDC_STATIC,10,96,300,8
+    CONTROL         "",IDC_TAB,"SysTabControl32",TCS_FIXEDWIDTH,7,7,626,347
 END
 
 DLG_LOGIN DIALOGEX 0, 0, 260, 135
@@ -115,6 +113,42 @@ BEGIN
     LTEXT           "线体:",IDC_STATIC,70,71,25,8
 END
 
+PAGE_DEBUG DIALOGEX 0, 0, 500, 243
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "确定",IDOK,388,222,50,14
+    PUSHBUTTON      "取消",IDCANCEL,443,222,50,14
+    PUSHBUTTON      "调试",IDC_BUTTON1,95,86,50,14
+END
+
+PAGE_LOG DIALOGEX 0, 0, 500, 243
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "确定",IDOK,388,222,50,14
+    PUSHBUTTON      "取消",IDCANCEL,443,222,50,14
+    PUSHBUTTON      "日志",IDC_BUTTON1,95,86,50,14
+END
+
+PAGE_STATISTICS DIALOGEX 0, 0, 500, 243
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "确定",IDOK,388,222,50,14
+    PUSHBUTTON      "取消",IDCANCEL,443,222,50,14
+    PUSHBUTTON      "统计",IDC_BUTTON1,95,86,50,14
+END
+
+PAGE_CONFIG DIALOGEX 0, 0, 500, 243
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "确定",IDOK,388,222,50,14
+    PUSHBUTTON      "取消",IDCANCEL,443,222,50,14
+    PUSHBUTTON      "设置",IDC_BUTTON1,95,86,50,14
+END
+
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -174,9 +208,9 @@ BEGIN
     IDD_OGCASSISTTOOL_DIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 313
+        RIGHTMARGIN, 632
         TOPMARGIN, 7
-        BOTTOMMARGIN, 193
+        BOTTOMMARGIN, 354
     END
 
     DLG_LOGIN, DIALOG
@@ -186,6 +220,38 @@ BEGIN
         TOPMARGIN, 7
         BOTTOMMARGIN, 128
     END
+
+    PAGE_DEBUG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 493
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 236
+    END
+
+    PAGE_LOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 493
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 236
+    END
+
+    PAGE_STATISTICS, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 493
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 236
+    END
+
+    PAGE_CONFIG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 493
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 236
+    END
 END
 #endif    // APSTUDIO_INVOKED
 
@@ -196,6 +262,7 @@ END
 //
 
 IDB_LOGO                BITMAP                  "res\\logo.bmp"
+IDB_TAB                 BITMAP                  "res\\tab.bmp"
 
 /////////////////////////////////////////////////////////////////////////////
 //

+ 44 - 0
Source/OGCAssistTool/OGCAssistTool/OGCAssistTool.vcproj

@@ -197,6 +197,22 @@
 				RelativePath=".\OGCAssistToolDlg.cpp"
 				>
 			</File>
+			<File
+				RelativePath=".\PageConfig.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\PageDebug.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\PageLog.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\PageStatistics.cpp"
+				>
+			</File>
 			<File
 				RelativePath=".\stdafx.cpp"
 				>
@@ -235,6 +251,22 @@
 				RelativePath=".\OGCAssistToolDlg.h"
 				>
 			</File>
+			<File
+				RelativePath=".\PageConfig.h"
+				>
+			</File>
+			<File
+				RelativePath=".\PageDebug.h"
+				>
+			</File>
+			<File
+				RelativePath=".\PageLog.h"
+				>
+			</File>
+			<File
+				RelativePath=".\PageStatistics.h"
+				>
+			</File>
 			<File
 				RelativePath=".\Resource.h"
 				>
@@ -253,6 +285,10 @@
 			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\bitmap1.bmp"
+				>
+			</File>
 			<File
 				RelativePath=".\res\logo.bmp"
 				>
@@ -269,6 +305,10 @@
 				RelativePath=".\res\OGCAssistTool.rc2"
 				>
 			</File>
+			<File
+				RelativePath=".\res\tab.bmp"
+				>
+			</File>
 		</Filter>
 		<File
 			RelativePath=".\ReadMe.txt"
@@ -276,5 +316,9 @@
 		</File>
 	</Files>
 	<Globals>
+		<Global
+			Name="RESOURCE_FILE"
+			Value="OGCAssistTool.rc"
+		/>
 	</Globals>
 </VisualStudioProject>

+ 100 - 10
Source/OGCAssistTool/OGCAssistTool/OGCAssistToolDlg.cpp

@@ -5,6 +5,10 @@
 #include "stdafx.h"
 #include "OGCAssistTool.h"
 #include "OGCAssistToolDlg.h"
+#include "PageDebug.h"
+#include "PageLog.h"
+#include "PageConfig.h"
+#include "PageStatistics.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -13,7 +17,7 @@
 
 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 
-class CAboutDlg : public CDialog
+class CAboutDlg : public CDialogEx
 {
 public:
 	CAboutDlg();
@@ -29,16 +33,16 @@ protected:
 	DECLARE_MESSAGE_MAP()
 };
 
-CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
 {
 }
 
 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
 {
-	CDialog::DoDataExchange(pDX);
+	CDialogEx::DoDataExchange(pDX);
 }
 
-BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
 END_MESSAGE_MAP()
 
 
@@ -48,21 +52,23 @@ END_MESSAGE_MAP()
 
 
 COGCAssistToolDlg::COGCAssistToolDlg(CWnd* pParent /*=NULL*/)
-	: CDialog(COGCAssistToolDlg::IDD, pParent)
+	: CDialogEx(COGCAssistToolDlg::IDD, pParent)
 {
 	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 }
 
 void COGCAssistToolDlg::DoDataExchange(CDataExchange* pDX)
 {
-	CDialog::DoDataExchange(pDX);
+	CDialogEx::DoDataExchange(pDX);
+	DDX_Control(pDX, IDC_TAB, m_tabCtrl);
 }
 
-BEGIN_MESSAGE_MAP(COGCAssistToolDlg, CDialog)
+BEGIN_MESSAGE_MAP(COGCAssistToolDlg, CDialogEx)
 	ON_WM_SYSCOMMAND()
 	ON_WM_PAINT()
 	ON_WM_QUERYDRAGICON()
 	//}}AFX_MSG_MAP
+	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &COGCAssistToolDlg::OnTcnSelchangeTab)
 END_MESSAGE_MAP()
 
 
@@ -70,7 +76,7 @@ END_MESSAGE_MAP()
 
 BOOL COGCAssistToolDlg::OnInitDialog()
 {
-	CDialog::OnInitDialog();
+	CDialogEx::OnInitDialog();
 
 	// 将“关于...”菜单项添加到系统菜单中。
 
@@ -98,6 +104,7 @@ BOOL COGCAssistToolDlg::OnInitDialog()
 	SetIcon(m_hIcon, FALSE);		// 设置小图标
 
 	// TODO: 在此添加额外的初始化代码
+	InitTabCtrl();
 
 	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 }
@@ -111,7 +118,7 @@ void COGCAssistToolDlg::OnSysCommand(UINT nID, LPARAM lParam)
 	}
 	else
 	{
-		CDialog::OnSysCommand(nID, lParam);
+		CDialogEx::OnSysCommand(nID, lParam);
 	}
 }
 
@@ -140,7 +147,7 @@ void COGCAssistToolDlg::OnPaint()
 	}
 	else
 	{
-		CDialog::OnPaint();
+		CDialogEx::OnPaint();
 	}
 }
 
@@ -151,3 +158,86 @@ HCURSOR COGCAssistToolDlg::OnQueryDragIcon()
 	return static_cast<HCURSOR>(m_hIcon);
 }
 
+void COGCAssistToolDlg::InitTabCtrl()
+{
+	BOOL bResult;
+	static CFont font;// 必须全局或成员或静态,局部变量无效异常;
+	bResult = font.CreateFont(50, 20, 0, 0, 800, FALSE, 0, 0, 1, 0, 0, 0, 0, _T("Arial"));
+	m_tabCtrl.SetFont(&font); 
+
+	m_ImageList.Create(IDB_TAB, 32, 1, RGB(255,255,255) );
+	m_tabCtrl.SetImageList(&m_ImageList);
+
+	m_tabCtrl.InsertItem(0, _T("调试"));
+	m_tabCtrl.InsertItem(1, _T("日志"));
+	m_tabCtrl.InsertItem(2, _T("统计"));
+	m_tabCtrl.InsertItem(3, _T("设置"));
+
+	TC_ITEM tcItem;
+	tcItem.mask = TCIF_IMAGE;
+	for( int i = 0; i < 4; i++ )
+	{
+		tcItem.iImage = i;
+		m_tabCtrl.SetItem( i, &tcItem );                            //显示ImageList的序号
+	}
+
+
+	// 获取当前窗口大小;
+	CRect rcWnd;
+	m_tabCtrl.GetWindowRect(&rcWnd);
+
+	int nCount = m_tabCtrl.GetItemCount();
+	// 设置标签的大小(必须在属性Style里设置Fixed Width)
+	CSize size(rcWnd.Width()/nCount-1, 80), sizeReturn;
+	sizeReturn = m_tabCtrl.SetItemSize(size);
+
+	// 设置好标签后,创建Page;
+	CPageDebug *pDlgDebug = new CPageDebug();
+	pDlgDebug->Create(PAGE_DEBUG, &m_tabCtrl);
+	m_pDialog[0] = pDlgDebug;
+
+	CPageLog* pDlgLog = new CPageLog();
+	pDlgLog->Create(PAGE_LOG, &m_tabCtrl);
+	m_pDialog[1] = pDlgLog;
+
+	CPageStatistics *pDlgStatistics = new CPageStatistics();
+	pDlgStatistics->Create(PAGE_STATISTICS, &m_tabCtrl);
+	m_pDialog[2] = pDlgStatistics;
+
+	CPageConfig *pDlgConfig = new CPageConfig();
+	pDlgConfig->Create(PAGE_CONFIG, &m_tabCtrl);
+	m_pDialog[3] = pDlgConfig;
+
+	//设定在Tab内显示的范围
+	CRect rcClient;
+	m_tabCtrl.GetClientRect(rcClient);
+	rcClient.top += 82;
+
+	pDlgDebug->MoveWindow(&rcClient);
+	pDlgDebug->ShowWindow(SW_SHOW);
+
+	pDlgLog->MoveWindow(&rcClient);
+	pDlgLog->ShowWindow(SW_HIDE);
+
+	pDlgConfig->MoveWindow(&rcClient);
+	pDlgConfig->ShowWindow(SW_HIDE);
+
+	pDlgStatistics->MoveWindow(&rcClient);
+	pDlgStatistics->ShowWindow(SW_HIDE);
+
+	// 设置默认page;
+	m_tabCtrl.SetCurSel(m_CurSelTab=0);
+}
+
+void COGCAssistToolDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
+{
+	// TODO: 在此添加控件通知处理程序代码
+	m_pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
+	//得到新的页面
+	m_CurSelTab = m_tabCtrl.GetCurSel();
+	//把新的页面显示出来
+	m_pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
+	m_pDialog[m_CurSelTab]->UpdateData(TRUE);
+
+	*pResult = 0;
+}

+ 9 - 1
Source/OGCAssistTool/OGCAssistTool/OGCAssistToolDlg.h

@@ -3,10 +3,11 @@
 //
 
 #pragma once
+#include "afxcmn.h"
 
 
 // COGCAssistToolDlg ¶Ô»°¿ò
-class COGCAssistToolDlg : public CDialog
+class COGCAssistToolDlg : public CDialogEx
 {
 // ¹¹Ôì
 public:
@@ -29,4 +30,11 @@ protected:
 	afx_msg void OnPaint();
 	afx_msg HCURSOR OnQueryDragIcon();
 	DECLARE_MESSAGE_MAP()
+public:
+	CTabCtrl m_tabCtrl;
+	int m_CurSelTab;
+	CDialogEx* m_pDialog[4];
+	CImageList  m_ImageList;
+	void InitTabCtrl();
+	afx_msg void OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult);
 };

+ 33 - 0
Source/OGCAssistTool/OGCAssistTool/PageConfig.cpp

@@ -0,0 +1,33 @@
+// DlgConfig.cpp : 实现文件
+//
+
+#include "stdafx.h"
+#include "OGCAssistTool.h"
+#include "PageConfig.h"
+
+
+// CDlgConfig 对话框
+
+IMPLEMENT_DYNAMIC(CPageConfig, CDialogEx)
+
+CPageConfig::CPageConfig(CWnd* pParent /*=NULL*/)
+	: CDialogEx(CPageConfig::IDD, pParent)
+{
+
+}
+
+CPageConfig::~CPageConfig()
+{
+}
+
+void CPageConfig::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPageConfig, CDialogEx)
+END_MESSAGE_MAP()
+
+
+// CDlgDebug 消息处理程序

+ 21 - 0
Source/OGCAssistTool/OGCAssistTool/PageConfig.h

@@ -0,0 +1,21 @@
+#pragma once
+
+
+// CDlgConfig 对话框
+
+class CPageConfig : public CDialogEx
+{
+	DECLARE_DYNAMIC(CPageConfig)
+
+public:
+	CPageConfig(CWnd* pParent = NULL);   // 标准构造函数
+	virtual ~CPageConfig();
+
+// 对话框数据
+	enum { IDD = PAGE_CONFIG };
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};

+ 33 - 0
Source/OGCAssistTool/OGCAssistTool/PageDebug.cpp

@@ -0,0 +1,33 @@
+// DlgDebug.cpp : 实现文件
+//
+
+#include "stdafx.h"
+#include "OGCAssistTool.h"
+#include "PageDebug.h"
+
+
+// CDlgDebug 对话框
+
+IMPLEMENT_DYNAMIC(CPageDebug, CDialogEx)
+
+CPageDebug::CPageDebug(CWnd* pParent /*=NULL*/)
+	: CDialogEx(CPageDebug::IDD, pParent)
+{
+
+}
+
+CPageDebug::~CPageDebug()
+{
+}
+
+void CPageDebug::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPageDebug, CDialogEx)
+END_MESSAGE_MAP()
+
+
+// CDlgDebug 消息处理程序

+ 21 - 0
Source/OGCAssistTool/OGCAssistTool/PageDebug.h

@@ -0,0 +1,21 @@
+#pragma once
+
+
+// CDlgDebug 对话框
+
+class CPageDebug : public CDialogEx
+{
+	DECLARE_DYNAMIC(CPageDebug)
+
+public:
+	CPageDebug(CWnd* pParent = NULL);   // 标准构造函数
+	virtual ~CPageDebug();
+
+// 对话框数据
+	enum { IDD = PAGE_DEBUG };
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};

+ 33 - 0
Source/OGCAssistTool/OGCAssistTool/PageLog.cpp

@@ -0,0 +1,33 @@
+// PageLog.cpp : 实现文件
+//
+
+#include "stdafx.h"
+#include "OGCAssistTool.h"
+#include "PageLog.h"
+
+
+// CPageLog 对话框
+
+IMPLEMENT_DYNAMIC(CPageLog, CDialogEx)
+
+CPageLog::CPageLog(CWnd* pParent /*=NULL*/)
+	: CDialogEx(CPageLog::IDD, pParent)
+{
+
+}
+
+CPageLog::~CPageLog()
+{
+}
+
+void CPageLog::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPageLog, CDialogEx)
+END_MESSAGE_MAP()
+
+
+// CDlgDebug 消息处理程序

+ 21 - 0
Source/OGCAssistTool/OGCAssistTool/PageLog.h

@@ -0,0 +1,21 @@
+#pragma once
+
+
+// CDlgLog 对话框
+
+class CPageLog : public CDialogEx
+{
+	DECLARE_DYNAMIC(CPageLog)
+
+public:
+	CPageLog(CWnd* pParent = NULL);   // 标准构造函数
+	virtual ~CPageLog();
+
+// 对话框数据
+	enum { IDD = PAGE_LOG };
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};

+ 33 - 0
Source/OGCAssistTool/OGCAssistTool/PageStatistics.cpp

@@ -0,0 +1,33 @@
+// PageStatistics.cpp : 实现文件
+//
+
+#include "stdafx.h"
+#include "OGCAssistTool.h"
+#include "PageStatistics.h"
+
+
+// CPageStatistics 对话框
+
+IMPLEMENT_DYNAMIC(CPageStatistics, CDialogEx)
+
+CPageStatistics::CPageStatistics(CWnd* pParent /*=NULL*/)
+	: CDialogEx(CPageStatistics::IDD, pParent)
+{
+
+}
+
+CPageStatistics::~CPageStatistics()
+{
+}
+
+void CPageStatistics::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPageStatistics, CDialogEx)
+END_MESSAGE_MAP()
+
+
+// CDlgDebug 消息处理程序

+ 21 - 0
Source/OGCAssistTool/OGCAssistTool/PageStatistics.h

@@ -0,0 +1,21 @@
+#pragma once
+
+
+// CPageStatistics 对话框
+
+class CPageStatistics : public CDialogEx
+{
+	DECLARE_DYNAMIC(CPageStatistics)
+
+public:
+	CPageStatistics(CWnd* pParent = NULL);   // 标准构造函数
+	virtual ~CPageStatistics();
+
+// 对话框数据
+	enum { IDD = PAGE_STATISTICS };
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
+
+	DECLARE_MESSAGE_MAP()
+};

BIN
Source/OGCAssistTool/OGCAssistTool/res/tab.bmp


+ 10 - 2
Source/OGCAssistTool/OGCAssistTool/resource.h

@@ -7,10 +7,18 @@
 #define IDS_ABOUTBOX                    101
 #define IDD_OGCASSISTTOOL_DIALOG        102
 #define IDR_MAINFRAME                   128
+#define PAGE_DEBUG                      129
 #define IDB_LOGO                        130
+#define IDB_BITMAP1                     132
+#define IDB_TAB                         132
 #define DLG_LOGIN                       310
+#define PAGE_LOG                        311
+#define PAGE_STATISTICS                 312
+#define PAGE_CONFIG                     313
 #define EDIT_ACCOUNT                    1000
+#define IDC_TAB                         1000
 #define EDIT_PASSWORD                   1001
+#define IDC_BUTTON1                     1001
 #define EDIT_LINE                       1002
 #define CHECK_OFFLINE                   1003
 
@@ -18,9 +26,9 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        129
+#define _APS_NEXT_RESOURCE_VALUE        133
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_CONTROL_VALUE         1002
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif