mainfrm.cpp

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

CPP
886
字号
	}

	pOutlookBar->EnableInPlaceEdit (TRUE);

	const UINT uiPage1ID = 1;
	const UINT uiPage2ID = 2;
	const UINT uiPage3ID = 3;

	DWORD dwPaneStyle = dwDefaultToolbarStyle | CBRS_FLOAT_MULTI;

	pane1.Create (&bar, dwPaneStyle, uiPage1ID);
	pane1.SetOwner (this);
	pane1.EnableTextLabels ();
	pane1.EnableDocking (CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT);

	pane2.Create (&bar, dwPaneStyle, uiPage2ID);
	pane2.SetOwner (this);
	pane2.EnableTextLabels ();
	pane2.EnableDocking (CBRS_ALIGN_ANY);

	CImageList images;
	images.Create (IDB_OUTLOOK_LARGE, 32, 0, RGB (255, 0, 255));

	AddWorkSpace (_T("Home"), 0, ID_VIEW_GOTO_HOME, pane1, ID_NEW_MAIL, images);
	AddWorkSpace (_T("Calendar"), 1, ID_VIEW_GOTO_CALENDAR, pane1, ID_NEW_APPOINMENT, images);
	AddWorkSpace (_T("Drafts"), 2, ID_VIEW_GOTO_DRAFTS, pane1, ID_NEW_MAIL, images);
	AddWorkSpace (_T("Inbox"), 3, ID_VIEW_GOTO_INBOX, pane1, ID_NEW_MAIL, images);
	AddWorkSpace (_T("Journal"), 4, ID_VIEW_GOTO_JOURNAL, pane1, ID_NEW_JOURNAL_ENTRY, images);
	AddWorkSpace (_T("Notes"), 5, ID_VIEW_GOTO_NOTES, pane1, ID_NEW_NOTE, images);
	AddWorkSpace (_T("Outbox"), 6, ID_VIEW_GOTO_OUTBOX, pane1, ID_NEW_MAIL, images);
	AddWorkSpace (_T("Sent Items"), 7, ID_VIEW_GOTO_SENTITEMS, pane1, ID_NEW_MAIL, images);
	AddWorkSpace (_T("Tasks"), 8, ID_VIEW_GOTO_TASKS, pane1, ID_NEW_TASK, images);

	pOutlookBar->AddControl (&pane1, (LPCTSTR)"General", 0);
	pane1.EnableDocking (CBRS_ALIGN_ANY);
	pane1.SetDefaultState ();

	AddWorkSpace (_T("My Computer"), 9, ID_VIEW_MY_COMPUTER, pane2, ID_NEW_SHORTCUT, images);
	AddWorkSpace (_T("Personal"), 10, ID_VIEW_GOTO_PERSONAL, pane2, ID_NEW_SHORTCUT, images);
	AddWorkSpace (_T("Favorites"), 10, ID_VIEW_GOTO_FAVORITES, pane2, ID_NEW_SHORTCUT, images);

	pOutlookBar->AddControl (&pane2, (LPCTSTR)"Other Shortcuts", 1);
	pane2.EnableDocking (CBRS_ALIGN_ANY);
	pane2.SetDefaultState ();

	CRect rectDummy (0, 0, 0, 0);
	const DWORD dwTreeStyle =	WS_CHILD | WS_VISIBLE | TVS_HASLINES | 
								TVS_LINESATROOT | TVS_HASBUTTONS;

	tree.Create (dwTreeStyle, rectDummy, &bar, 1200);
	pOutlookBar->AddControl (&tree, _T("Folders"), 2);

	calendar.Create (rectDummy, &bar, 1201);
	pOutlookBar->AddControl (&calendar, _T("Calendar"), 3);

	bar.SetBarStyle(bar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	BOOL bAnimation = theApp.GetInt (_T("OutlookAnimation"), TRUE);
	CBCGPOutlookWnd::EnableAnimation (bAnimation);

	return TRUE;
}
//****************************************************************************************
BOOL CMainFrame::CreateCaptionBar ()
{
	if (!m_wndCaption.Create (WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, 
		this, ID_VIEW_CAPTIONBAR, -1))
	{
		TRACE0("Failed to create caption bar\n");
		return FALSE;
	}

	m_wndCaption.SetFlatBorder ();
	m_wndCaption.SetFont (&globalData.fontBold);

	return TRUE;
}
//****************************************************************************************
void CMainFrame::OnViewCaptionbar() 
{
	ShowControlBar (&m_wndCaption,
					!(m_wndCaption.GetStyle () & WS_VISIBLE),
					FALSE, TRUE);
}
//*************************************************************************************
void CMainFrame::OnUpdateViewCaptionbar(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck (m_wndCaption.GetStyle () & WS_VISIBLE);
}
//*************************************************************************************
void CMainFrame::OnViewWorkSpace (UINT id)
{
	for (POSITION pos = m_lstWorkspaces.GetHeadPosition (); pos != NULL;)
	{
		CWorkspaceObj* pWS = (CWorkspaceObj*) m_lstWorkspaces.GetNext (pos);
		ASSERT_VALID (pWS);

		if (pWS->m_uiCmd == id)
		{
			SetWorkSpace (pWS);
		}
	}
}
//*************************************************************************************
void CMainFrame::SetWorkSpace (CWorkspaceObj* pWorkSpace)
{
	ASSERT_VALID (pWorkSpace);

	m_pCurrWorkSpace = pWorkSpace;

	m_wndCaption.SetIcon (m_ImagesSmall.ExtractIcon (m_pCurrWorkSpace->m_iIconIndex));
	m_wndCaption.SetButton (m_pCurrWorkSpace->m_strName, ID_SHOW_FOLDERS_POPUP);

	m_wndCaption.Invalidate ();
	m_wndCaption.UpdateWindow ();

	m_wndFolderList.SelectWorkspace (pWorkSpace);

}
//*************************************************************************************
void CMainFrame::OnViewFolderList() 
{
	ShowControlBar (&m_wndFolderList,
					!(m_wndFolderList.GetStyle () & WS_VISIBLE),
					FALSE, TRUE);
	RecalcLayout ();

}
//*************************************************************************************
void CMainFrame::OnUpdateViewFolderList(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck (m_wndFolderList.GetStyle () & WS_VISIBLE);
}
//*************************************************************************************
void CMainFrame::OnViewFoldersPopup()
{
	// First, calulate popup window rectangle.
	// Top left corner need to be under the caption's button:
	CRect rectButton = m_wndCaption.GetButtonRect ();
	m_wndCaption.ClientToScreen (&rectButton);

	// Width will be same as folder bar's width:
	CRect rectFolderBar;
	m_wndFolderList.GetWindowRect (&rectFolderBar);

	// Bottom will be near the main frame bottom:
	CRect rectStatusBar;
	m_wndStatusBar.GetWindowRect (rectStatusBar);

	CRect rectPopup (rectButton.left, rectButton.bottom,
		rectButton.left + rectFolderBar.Width (), rectStatusBar.bottom - 1);

	CFolderListPopupWnd* pFoldersPopup = 
		new CFolderListPopupWnd (m_lstWorkspaces, m_ImagesSmall, m_pCurrWorkSpace);
	pFoldersPopup->Create (rectPopup);

	m_wndCaption.SetButtonPressed ();
}
//*************************************************************************************
void CMainFrame::OnCloseFoldersPopup (BOOL bKeep)
{
	if (bKeep)
	{
		m_wndCaption.EnableButton (FALSE);
		ShowControlBar (&m_wndFolderList, TRUE, FALSE, TRUE);
	}

	m_wndCaption.SetButtonPressed (FALSE);
}
//*************************************************************************************
void CMainFrame::RecalcLayout(BOOL bNotify) 
{
	CFrameWnd::RecalcLayout(bNotify);

	if (m_wndFolderList.GetSafeHwnd () != NULL)
	{
		m_wndCaption.EnableButton (!(m_wndFolderList.GetStyle () & WS_VISIBLE));
	}
}
//*************************************************************************************
void CMainFrame::AdjustDockingLayout (HDWP hdwp)
{
	CFrameWnd::AdjustDockingLayout (hdwp);
	if (m_wndFolderList.GetSafeHwnd () != NULL)
	{
		m_wndCaption.EnableButton (!(m_wndFolderList.GetStyle () & WS_VISIBLE));
	}
}
//*************************************************************************************
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	CRect rectClient;
	GetClientRect (rectClient);

	m_wndSplitter.CreateStatic (this, 2, 1);
	m_wndSplitter.CreateView (0, 0, pContext->m_pNewViewClass, 
							CSize (0, rectClient.Height ()*2 / 3), pContext);
	m_wndSplitter.CreateView (1, 0, RUNTIME_CLASS (CRFIDScanView), 
							CSize (0, rectClient.Height () / 3), pContext);
	
	return TRUE;
}
//*************************************************************************************
void CMainFrame::SetBasicCommands ()
{
	CList<UINT, UINT>	lstBasicCommands;

	lstBasicCommands.AddTail (ID_VIEW_TOOLBARS);
	lstBasicCommands.AddTail (ID_FILE_NEW);
	lstBasicCommands.AddTail (ID_FILE_OPEN);
	lstBasicCommands.AddTail (ID_FILE_SAVE);
	lstBasicCommands.AddTail (ID_FILE_PRINT);
	lstBasicCommands.AddTail (ID_APP_EXIT);
	lstBasicCommands.AddTail (ID_EDIT_CUT);
	lstBasicCommands.AddTail (ID_EDIT_PASTE);
	lstBasicCommands.AddTail (ID_EDIT_UNDO);
	lstBasicCommands.AddTail (ID_APP_ABOUT);
	lstBasicCommands.AddTail (ID_VIEW_TOOLBAR);
	lstBasicCommands.AddTail (ID_VIEW_CUSTOMIZE);
	lstBasicCommands.AddTail (ID_VIEW_APP_LOOK);
	lstBasicCommands.AddTail (ID_NEW_MAIL);
	lstBasicCommands.AddTail (ID_NEW_FAX);
	lstBasicCommands.AddTail (ID_NEW_POST_FOLDER);
	lstBasicCommands.AddTail (ID_NEW_APPOINMENT);
	lstBasicCommands.AddTail (ID_NEW_MEETING);
	lstBasicCommands.AddTail (ID_NEW_CONTRACT);
	lstBasicCommands.AddTail (ID_NEW_DISTRIBUTION_LIST);
	lstBasicCommands.AddTail (ID_NEW_TASK);
	lstBasicCommands.AddTail (ID_NEW_NOTE);
	lstBasicCommands.AddTail (ID_DUMMY);
	lstBasicCommands.AddTail (ID_VIEW_FOLDER_LIST);
	lstBasicCommands.AddTail (ID_FILE_SAVE_AS);
	lstBasicCommands.AddTail (ID_FILE_PRINT_PREVIEW);
	lstBasicCommands.AddTail (ID_FILE_CLOSE);
	
	lstBasicCommands.AddTail (ID_DB_CONNECT);
	lstBasicCommands.AddTail (ID_DB_DISCONNECT);
	lstBasicCommands.AddTail (ID_DB_SETTING);
	lstBasicCommands.AddTail (ID_RFID_ASSOCIATE);
	lstBasicCommands.AddTail (ID_RFID_DEASSOCIATE);
	lstBasicCommands.AddTail (ID_COMM_CONNECT);
	lstBasicCommands.AddTail (ID_COMM_DISCONNECT);
	lstBasicCommands.AddTail (ID_COMM_SETTING);
	lstBasicCommands.AddTail (ID_ADDRESS_BOOK);

	CBCGPToolBar::SetBasicCommands (lstBasicCommands);
}
//****************************************************************************************
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
	
	if (nState != WA_INACTIVE)
	{
		theApp.SetActiveFrame (CRFID_DesktopReaderApp::MainFrame);
		theApp.m_pMainWnd = this;
	}
}
//**************************************************************************************
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) 
{
	if (!CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
	{
		return FALSE;
	}

	//----------------------------------------------------
	// Enable customization button fore all user toolbars:
	//----------------------------------------------------
	for (int i = 0; i < uiLastUserToolBarId - uiFirstUserToolBarId + 1; i++)
	{
		CBCGPToolBar* pUserToolbar = GetUserBarByIndex (i);
		if (pUserToolbar != NULL)
		{
			pUserToolbar->EnableCustomizeButton (TRUE, ID_VIEW_CUSTOMIZE, IDS_CUSTOMIZE);
		}
	}

	return TRUE;
}
//***************************************************************************************
LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp)
{
	LRESULT lres = CBCGPFrameWnd::OnToolbarCreateNew (wp,lp);
	if (lres == 0)
	{
		return 0;
	}

	CBCGPToolBar* pUserToolbar = (CBCGPToolBar*) lres;
	ASSERT_VALID (pUserToolbar);

	pUserToolbar->EnableCustomizeButton (TRUE, ID_VIEW_CUSTOMIZE, _T("Customize..."));
	pUserToolbar->AdjustLayout ();
	return lres;
}


//************************************************************************************
CBCGPOutlookWnd* CMainFrame::FindOutlookParent (CWnd* pWnd)
{
	if (pWnd == NULL)
	{
		return NULL;
	}

	if (pWnd->IsKindOf (RUNTIME_CLASS (CBCGPOutlookBar)))
	{	
		return (CBCGPOutlookWnd*) ((CBCGPOutlookBar*)pWnd)->GetUnderlinedWindow ();
	}

	CWnd* pParent = pWnd->GetParent ();
	while (pParent != NULL)
	{
		if (pParent->IsKindOf (RUNTIME_CLASS (CBCGPOutlookBar)))
		{
			return (CBCGPOutlookWnd*) ((CBCGPOutlookBar*)pParent)->GetUnderlinedWindow ();
			
		}
		pParent = pParent->GetParent ();
	}
	return NULL;
}
//*******************************************************************************************
void CMainFrame::OnClose() 
{
	theApp.WriteInt (_T("OutlookAnimation"), CBCGPOutlookWnd::IsAnimation ());
	CFrameWnd::OnClose();
}
//*********************************************************************************
void CMainFrame::OnUpdateIndicatorSendReceive (CCmdUI* pCmdUI)
{
	pCmdUI->Enable ();
}
//********************************************************************************
void CMainFrame::OnChangeLook (BOOL bOutlookBar2003)
{
/*	
	BOOL bIsLook2003 = CBCGPVisualManager::GetInstance ()->IsKindOf (
		RUNTIME_CLASS (CBCGPVisualManager2003));

	CBCGPOutlookBar& bar = m_bOutlookBar2003 ? m_wndBarOutlook2003 : m_wndBarOutlook;

	m_bOutlookBar2003 = bOutlookBar2003;

	if ((bar.GetStyle () & WS_VISIBLE) != 0)
	{
		if (m_bOutlookBar2003)
		{
			ShowControlBar (&m_wndBarOutlook2003, TRUE, FALSE, TRUE);
			ShowControlBar (&m_wndBarOutlook, FALSE, FALSE, TRUE);
		}
		else
		{
			ShowControlBar (&m_wndBarOutlook, TRUE, FALSE, TRUE);
			ShowControlBar (&m_wndBarOutlook2003, FALSE, FALSE, TRUE);
		}
	}

	//-----------------------
	// Reload toolbar images:
	//-----------------------
	CWindowDC dc (NULL);
	int nBitsPerPixel = dc.GetDeviceCaps (BITSPIXEL);

	BOOL bIsHiColor = bIsLook2003 && nBitsPerPixel > 16;

	CBCGPToolBar::ResetAllImages ();

	CBCGPToolBar::AddToolBarForImageCollection (IDR_MENU_IMAGES,
		bIsHiColor ? IDB_MENU_IMAGE_HC : 0);

//	m_wndToolBar.LoadBitmap (bIsHiColor ? IDB_TOOLBAR_HC : IDR_MAINFRAME);
//	m_wndToolBarAdvanced.LoadBitmap (bIsHiColor ? IDB_ADVANCED_HC : IDR_ADVANCED);
//	m_wndToolBarWeb.LoadBitmap (bIsHiColor ? IDB_WEB_HC : IDR_WEB);
*/

/*	CBCGPToolBarParams bmpParam;
	bmpParam.m_uiMenuResID=IDR_DATABASE;
	bmpParam.m_uiMenuDisabledResID=IDR_DATABASE;
	bmpParam.m_uiColdResID=IDR_DATABASE;
	bmpParam.m_uiDisabledResID=IDR_DATABASE;
	bmpParam.m_uiHotResID=IDR_DATABASE;

	bmpParam.m_uiLargeColdResID=IDB_OUTLOOK_LARGE;
	bmpParam.m_uiLargeHotResID=IDB_OUTLOOK_LARGE;
	bmpParam.m_uiLargeDisabledResID=IDB_OUTLOOK_LARGE;


	m_wndDatabase.LoadBitmapEx(bmpParam,FALSE);
*/
/*	m_wndDatabase.LoadBitmap(bIsHiColor ?IDB_TOOLBAR_HC:IDR_DATABASE );
	m_wndRFID.LoadBitmap(bIsHiColor ?IDB_TOOLBAR_HC:IDR_RFID);
	m_wndComm.LoadBitmap(bIsHiColor ?IDB_TOOLBAR_HC:IDR_COMM);

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

	if (pOutlookBar != NULL)
	{
		pOutlookBar->SetImageList (bIsHiColor ? IDB_PAGES_HC : IDB_PAGES, 24);
		pOutlookBar->SetToolbarImageList (bIsHiColor ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16);

		m_wndBarOutlook2003.RecalcLayout ();
	}

	RedrawWindow (NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);

*/


}

void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) 
{
	m_wndCaption.SetFont (NULL);

	CFrameWnd::OnSettingChange(uFlags, lpszSection);
	
	m_wndCaption.SetFont (&globalData.fontBold);
}



LRESULT CMainFrame::OnMapedRFID(WPARAM wParam, LPARAM lParam)
{
	return LRESULT();
}

BOOL CMainFrame::CreateTaskPane ()
{
	CRect rectDummy(0, 0, 200, 400);
	if (!m_wndTaskPane.Create(_T("操作工具栏"), this, rectDummy, TRUE, ID_VIEW_TASKPANE,
		WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_BCGP_CLOSE | CBRS_BCGP_FLOAT))
	{
		TRACE0("Failed to create task pane\n");
		return FALSE;      // fail to create
	}

	return TRUE;
}

⌨️ 快捷键说明

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