mainfrm.cpp

来自「RFID读卡器源码,vc.net编写,bcgp界面控件」· C++ 代码 · 共 886 行 · 第 1/2 页

CPP
886
字号
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "RFID_DesktopReader.h"
#include "WorkspaceObj.h"
#include "FolderListPopupWnd.h"
#include "RFIDScanView.h"
#include "RFID_DesktopReaderView.h"
//#include "MailFrame.h"

#include "MainFrm.h"
#include ".\mainfrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

const int  iMaxUserToolbars		= 10;
const UINT uiFirstUserToolBarId	= AFX_IDW_CONTROLBAR_FIRST + 40;
const UINT uiLastUserToolBarId	= uiFirstUserToolBarId + iMaxUserToolbars - 1;

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_VIEW_OUTLOOKBAR, OnViewOutlookbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_OUTLOOKBAR, OnUpdateViewOutlookbar)
	ON_COMMAND(ID_VIEW_CAPTIONBAR, OnViewCaptionbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_CAPTIONBAR, OnUpdateViewCaptionbar)
	ON_COMMAND(ID_VIEW_FOLDER_LIST, OnViewFolderList)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FOLDER_LIST, OnUpdateViewFolderList)
	ON_WM_ACTIVATE()

	ON_WM_CLOSE()
	ON_WM_SETTINGCHANGE()
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_VIEW_CUSTOMIZE, OnViewCustomize)
	ON_REGISTERED_MESSAGE(BCGM_RESETTOOLBAR, OnToolbarReset)
	ON_REGISTERED_MESSAGE(BCGM_CREATETOOLBAR, OnToolbarCreateNew)
	ON_COMMAND_RANGE(ID_VIEW_GOTO_HOME, ID_VIEW_GOTO_FAVORITES, OnViewWorkSpace)
	ON_COMMAND(ID_SHOW_FOLDERS_POPUP, OnViewFoldersPopup)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_ANIMATION, OnUpdateIndicatorSendReceive)
	ON_MESSAGE(WM_MAPEDRFID,OnMapedRFID)
//	ON_COMMAND(ID_RFID_ASSOCIATE, OnRfidAssociate)
//	ON_COMMAND(ID_RFID_DEASSOCIATE, OnRfidDeassociate)
//	ON_UPDATE_COMMAND_UI(ID_RFID_ASSOCIATE, OnUpdateRfidAssociate)
//	ON_UPDATE_COMMAND_UI(ID_RFID_DEASSOCIATE, OnUpdateRfidDeassociate)
END_MESSAGE_MAP()

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

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

CMainFrame::CMainFrame() :
	m_wndFolderList (m_lstWorkspaces, m_ImagesSmall)
{
	m_uiHilightedPage = (UINT)-1;
	m_pCurrWorkSpace = NULL;
	m_pCurrOutlookWnd = NULL;
	m_pCurrOutlookPage = NULL;

	CBCGPVisualManager::SetDefaultManager (RUNTIME_CLASS (CBCGPVisualManagerXP));
	CBCGPOutlookWnd::EnableAnimation (TRUE);

	m_bOutlookBar2003 = FALSE;
}
//****************************************************************************************
CMainFrame::~CMainFrame()
{
	while (!m_lstWorkspaces.IsEmpty ())
	{
		delete m_lstWorkspaces.RemoveHead ();
	}
}
//****************************************************************************************
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;


	CBCGPToolBar::EnableQuickCustomization ();
/*
	CBCGPToolBar::SetLook2000 ();
	CBCGPToolbarComboBoxButton::SetFlatMode ();
	CBCGPToolBar::AddToolBarForImageCollection (IDR_MENU_IMAGES);
*/
	CBCGPVisualManager::SetDefaultManager (RUNTIME_CLASS (CBCGPWinXPVisualManager));

	((CBCGPWinXPVisualManager*)CBCGPVisualManager::GetInstance ())->SetOfficeStyleMenus ();

	CBCGPToolBar::SetSizes (CSize (40, 40), CSize (32, 32));
	CBCGPToolBar::SetMenuSizes (CSize (22, 22), CSize (16, 16));

	//创建tasks pane
	if (!CreateTaskPane ())
	{
		TRACE0("Failed to create tasks pane\n");
		return -1;      // fail to create
	}

	//------------------------------------------------------
	// Define basic commands. These commands will appear in
	// the menu by default:
	//------------------------------------------------------
	SetBasicCommands ();

	//-----------------
	// Create menu bar:
	//-----------------
	if (!m_wndMenuBar.Create (this))
	{
		TRACE0("Failed to create menubar\n");
		return -1;      // fail to create
	}

	m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);

	//--------------------------
	// Create Database toolbar
	//--------------------------
	if(!m_wndDatabase.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
		|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||
//		!m_wndDatabase.LoadToolBar(IDR_DATABASE))
		!m_wndDatabase.LoadToolBar(IDR_DB_LARGE,IDB_DB_LARGE,0,FALSE,0,0,IDB_DB_LARGE))
	{
		TRACE0("Failed to create Database toolbar\n");
		return -1;
	}
	CString strDatabaseToolbarTitle;
	strDatabaseToolbarTitle.LoadString (IDS_DATABASE_TOOLBAR);
	m_wndDatabase.SetWindowText (strDatabaseToolbarTitle);
	m_wndDatabase.EnableTextLabels(true);
	

	m_wndDatabase.SetBorders ();

	//------------------------------------
	// Remove toolbar gripper and borders:
	//------------------------------------
	m_wndDatabase.SetBarStyle (m_wndDatabase.GetBarStyle() &
		~(CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));


	//-------------------
	// Create status bar:
	//-------------------
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
	


	m_imlStatusAnimation.Create (IDB_ANIMATION, 16, 0, RGB (255, 0, 255));
	m_wndStatusBar.SetPaneAnimation (1, m_imlStatusAnimation);
	m_wndStatusBar.SetPaneStyle (1, SBPS_NOBORDERS);

	m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
	m_wndDatabase.EnableDocking(CBRS_ALIGN_ANY);


	//------------------------------------------------------------------
	// Outlook bar will be created at left, so temporary disable docking
	// at the left side:
	//------------------------------------------------------------------
	EnableDocking (CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);

	m_wndBarOutlook2003.SetMode2003 ();
/*
	//------------------------------------------
	// Create and setup "Outlook" shortcuts bar:
	//------------------------------------------
	if (!CreateOutlookBar (	m_wndBarOutlook, ID_VIEW_OUTLOOKBAR,
							m_wndOutlookPane1, m_wndOutlookPane2,
							m_wndTree, m_wndCalendar, 100) ||
		!CreateOutlookBar (m_wndBarOutlook2003, ID_VIEW_OUTLOOKBAR2003,
							m_wndOutlookPane12003, m_wndOutlookPane22003,
							m_wndTree2003, m_wndCalendar2003, 200))
	{
		TRACE0("Failed to create outlook bar\n");
		return -1;      // fail to create
	}

	m_wndBarOutlook2003.SetButtonsFont (&globalData.fontBold);
	m_wndBarOutlook2003.ShowWindow (SW_HIDE);

	m_ImagesSmall.Create (IDB_OUTLOOK_SMALL, 16, 0, RGB (255, 0, 255));
*/

	//----------------------
	// Create a caption bar:
	//----------------------
	if (!CreateCaptionBar ())
	{
		TRACE0("Failed to create caption bar\n");
		return -1;      // fail to create
	}
/*
	//---------------------
	// Create folders list:
	//---------------------
	if (!m_wndFolderList.Create (_T("Folder List"),this, CRect (0, 0, 200, 200),
		TRUE,
		ID_VIEW_FOLDER_LIST,
		WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_HIDE_INPLACE | WS_CAPTION,
		CBRS_BCGP_OUTLOOK_TABS,
		CBRS_BCGP_CLOSE | CBRS_BCGP_RESIZE))
	{
		TRACE0("Failed to create folder list\n");
		return -1;      // fail to create
	}

	m_wndFolderList.EnableDocking (CBRS_ALIGN_LEFT);
	DockControlBar(&m_wndFolderList);
*/

	//----------------------------------------------------
	// Outlook bar is created and docking on the left side
	// should be allowed.
	//----------------------------------------------------
	EnableDocking (CBRS_ALIGN_LEFT);
	EnableAutoHideBars(CBRS_ALIGN_RIGHT);

	m_wndTaskPane.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
	DockControlBar(&m_wndTaskPane);

	DockControlBar(&m_wndMenuBar);
	DockControlBar(&m_wndDatabase);

	//----------------------------------------
	// Allow user-defined toolbars operations:
	//----------------------------------------
	InitUserToobars (NULL,
					uiFirstUserToolBarId,
					uiLastUserToolBarId);

	//-----------------------------------------------
	// Enable customization button fore all toolbars:
	//-----------------------------------------------
	m_wndDatabase.EnableCustomizeButton (TRUE, ID_VIEW_CUSTOMIZE, IDS_CUSTOMIZE);


//	SetWorkSpace ((CWorkspaceObj*) m_lstWorkspaces.GetHead ());

	return 0;
}
//*************************************************************************************
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

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

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

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

#endif //_DEBUG

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


void CMainFrame::OnViewCustomize()
{
	
	//------------------------------------
	// Create a customize toolbars dialog:
	//------------------------------------
	CBCGPToolbarCustomize* pDlgCust = new CBCGPToolbarCustomize (this,
		TRUE /* Automatic menus scaning */);

	pDlgCust->EnableUserDefinedToolbars ();
	pDlgCust->Create ();
}


//*************************************************************************************
LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM)
{
	/*
	UINT uiToolBarId = (UINT) wp;
	if (uiToolBarId == IDR_DATABASE)
	{
		// Replace new button by the menu
		CMenu menu;
		VERIFY (menu.LoadMenu (IDR_MAINFRAME));

		CMenu* pMenu = menu.GetSubMenu (4);
		VERIFY (pMenu != NULL);


		UINT uiNewCmdID = ID_DB_CONNECT;

		CBCGPToolbarMenuButton btnNew (uiNewCmdID, pMenu->GetSafeHmenu (), 
			CImageHash::GetImageOfCommand (uiNewCmdID));

		m_wndDatabase.ReplaceButton(ID_DB_CONNECT,btnNew);
//		m_wndDatabase.SetSetToolBarBtnText(m_wndDatabase.CommandToIndex(uiNewCmdID),


//		m_wndToolBar.ReplaceButton (ID_FILE_NEW, btnNew);

//		m_wndToolBar.SetToolBarBtnText (m_wndToolBar.CommandToIndex (uiNewCmdID),
//			_T("&New"));

		// Send/Receive appear with the text label:
//		m_wndToolBar.SetToolBarBtnText (m_wndToolBar.CommandToIndex (ID_SEND_RECEIVE));

		// Replace Find Contact by combo:
//		m_wndToolBar.ReplaceButton (ID_FIND_CONTACT, 
//			CBCGPToolbarComboBoxButton (ID_FIND_CONTACT, 
//					CImageHash::GetImageOfCommand (ID_FIND_CONTACT), CBS_DROPDOWN));
	}
	else if (uiToolBarId == IDR_RFID)
	{
		CMenu menu;
		VERIFY (menu.LoadMenu (IDR_MAINFRAME));
		CMenu* pSubMenu = menu.GetSubMenu (5);

		CBCGPToolbarMenuButton btnBack (ID_RFID_ASSOCIATE, pSubMenu->GetSafeHmenu (), 
			CImageHash::GetImageOfCommand (ID_RFID_ASSOCIATE));
		m_wndRFID.ReplaceButton(ID_RFID_ASSOCIATE,btnBack);

//		m_wndToolBarWeb.ReplaceButton (ID_WEB_BACK, btnBack);

//		m_wndToolBarWeb.ReplaceButton (ID_WEB_ADDRESS, 
//			CBCGPToolbarComboBoxButton (ID_WEB_ADDRESS, 
//					CImageHash::GetImageOfCommand (ID_WEB_ADDRESS), CBS_DROPDOWN));
	}
	else if (uiToolBarId == IDR_COMM)
	{
		CMenu menu;
		VERIFY (menu.LoadMenu (IDR_MAINFRAME));
		CMenu* pSubMenu = menu.GetSubMenu (6);

		CBCGPToolbarMenuButton btnBack (ID_COMM_CONNECT, pSubMenu->GetSafeHmenu (), 
			CImageHash::GetImageOfCommand (ID_COMM_CONNECT));
		m_wndComm.ReplaceButton (ID_COMM_CONNECT, btnBack);
	}

*/


	return 0;
}



//*************************************************************************************
void CMainFrame::OnViewOutlookbar() 
{
	CBCGPOutlookBar& bar = m_bOutlookBar2003 ? m_wndBarOutlook2003 : m_wndBarOutlook;

	ShowControlBar (&bar,
					!(bar.GetStyle () & WS_VISIBLE),
					FALSE, TRUE);
}
//*************************************************************************************
void CMainFrame::OnUpdateViewOutlookbar(CCmdUI* pCmdUI) 
{
	CBCGPOutlookBar& bar = m_bOutlookBar2003 ? m_wndBarOutlook2003 : m_wndBarOutlook;
	pCmdUI->SetCheck (bar.GetStyle () & WS_VISIBLE);
}
//*************************************************************************************
void CMainFrame::AddWorkSpace (const CString& strName, const int iIconIndex, 
							   const UINT uiCmd,
							   CBCGPOutlookBarPane& pane,
							   const UINT uiNewCmdID,
							   CImageList& images)
{
	pane.AddButton (images.ExtractIcon (iIconIndex), strName, uiCmd);

	BOOL bIsAlreadyExist = FALSE;
	for (POSITION pos = m_lstWorkspaces.GetHeadPosition (); pos != NULL;)
	{
		CWorkspaceObj* pWS = (CWorkspaceObj*) m_lstWorkspaces.GetNext (pos);
		ASSERT_VALID (pWS);

		if (pWS->m_uiCmd == uiCmd)
		{
			bIsAlreadyExist = TRUE;
			break;
		}
	}

	if (!bIsAlreadyExist)
	{
		m_lstWorkspaces.AddTail (new CWorkspaceObj (strName, uiCmd, iIconIndex, uiNewCmdID));
	}
}
//*************************************************************************************
BOOL CMainFrame::CreateOutlookBar (CBCGPOutlookBar& bar, UINT uiID,
								   CBCGPOutlookBarPane& pane1, CBCGPOutlookBarPane& pane2,
									CBCGPShellTree& tree, CCalendarBar& calendar,
									int nInitialWidth)
{
	if (!bar.Create (_T("Shortcuts"), this, CRect (0, 0, nInitialWidth, 32000), 
		uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
	{
		return FALSE;		// fail to create
	}

	CBCGPOutlookWnd* pOutlookBar = (CBCGPOutlookWnd*) 
										bar.GetUnderlinedWindow ();

	if (pOutlookBar == NULL)
	{
		ASSERT (FALSE);
		return FALSE;

⌨️ 快捷键说明

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