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 + -
显示快捷键?