// MenuListBoxView.cpp : implementation file // // This file is a part of the XTREME TOOLKIT PRO MFC class library. // (c)1998-2008 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Pager.h" #include "MenuListBoxView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMenuListBoxView IMPLEMENT_DYNCREATE(CMenuListBoxView, CView) CMenuListBoxView::CMenuListBoxView() { } CMenuListBoxView::~CMenuListBoxView() { } #ifndef _countof #define _countof(array) (sizeof(array)/sizeof(array[0])) #endif BEGIN_MESSAGE_MAP(CMenuListBoxView, CView) //{{AFX_MSG_MAP(CMenuListBoxView) ON_WM_SIZE() ON_WM_CREATE() ON_MESSAGE( XTWM_OUTBAR_NOTIFY, OnOutbarNotify ) //}}AFX_MSG_MAP ON_NOTIFY(PGN_SCROLL, IDC_PAGER_CTRL, OnPagerScroll) ON_NOTIFY(PGN_CALCSIZE, IDC_PAGER_CTRL, OnPagerCalcSize) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMenuListBoxView drawing void CMenuListBoxView::OnDraw(CDC*) { } ///////////////////////////////////////////////////////////////////////////// // CMenuListBoxView diagnostics #ifdef _DEBUG void CMenuListBoxView::AssertValid() const { CView::AssertValid(); } void CMenuListBoxView::Dump(CDumpContext& dc) const { CView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMenuListBoxView message handlers void CMenuListBoxView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); if(m_wndPager.GetSafeHwnd()) { m_wndPager.MoveWindow(0,0,cx,cy); } } int CMenuListBoxView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // Create the pager control. if (!m_wndPager.Create(WS_CHILD|WS_VISIBLE|PGS_VERT, CRect(0,0,0,0), this, IDC_PAGER_CTRL )) { TRACE0("Failed to create CPagerCtrl...\n"); return -1; } // Create the OutlookBar control using m_wndPager as the parent. if (!m_wndMenuListBox.Create( WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(0,0,0,0), &m_wndPager, IDC_OUTBAR )) { TRACE0("Failed to create COutlookBar...\n"); return -1; } // Set the CWnd object you want messages sent to. m_wndMenuListBox.SetOwner(this); // m_wndMenuListBox.SetColors(RGB(0xff,0xff,0xff), RGB(0x3a,0x6e,0xa5)); // Add items to the Outlook Bar control. m_wndMenuListBox.AddMenuItem(IDI_ICON_OUTLOOK, _T("Outlook Today")), m_wndMenuListBox.AddMenuItem(IDI_ICON_CONTACTS, _T("Contacts") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_TASKS, _T("Tasks") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_JOURNAL, _T("Journal") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_NOTES, _T("Notes") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_DELETED, _T("Deleted Items")), m_wndMenuListBox.AddMenuItem(IDI_ICON_PUBLIC, _T("Public") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_DRAFTS, _T("Drafts") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_OUTBOX, _T("Outbox") ), m_wndMenuListBox.AddMenuItem(IDI_ICON_SENT, _T("Sent") ), // Insert menu items at a specific index. m_wndMenuListBox.InsertMenuItem(1, IDI_ICON_INBOX, _T("Inbox") ), m_wndMenuListBox.InsertMenuItem(2, IDI_ICON_CALENDAR, _T("Calendar")), // Set the child HWND to COutlookBar, and button size to 15. m_wndPager.SetChild(m_wndMenuListBox.GetSafeHwnd()); m_wndPager.SetButtonSize(15); m_wndMenuListBox.EnableMenuItem(2, FALSE); return 0; } void CMenuListBoxView::OnPagerCalcSize(NMHDR* pNMHDR, LRESULT* pResult) { NMPGCALCSIZE* pNMPGCalcSize = (NMPGCALCSIZE*)pNMHDR; switch(pNMPGCalcSize->dwFlag) { case PGF_CALCWIDTH: break; case PGF_CALCHEIGHT: pNMPGCalcSize->iHeight = m_wndMenuListBox.GetCount() *(::GetSystemMetrics(SM_CYICON)*2); break; } *pResult = 0; } void CMenuListBoxView::OnPagerScroll(NMHDR* pNMHDR, LRESULT* pResult) { NMPGSCROLL* pNMPGScroll = (NMPGSCROLL*)pNMHDR; UNREFERENCED_PARAMETER(pNMPGScroll); *pResult = 0; // TODO: Handle pager scroll notification } LRESULT CMenuListBoxView::OnOutbarNotify(WPARAM wParam, LPARAM lParam) { if ((int)wParam == -1) // -1 means no selection return 0; switch( lParam ) // control id. { case IDC_OUTBAR: { // Get the menu item. CXTMenuListBox::CONTENT_ITEM* pContentItems = m_wndMenuListBox.GetMenuItem((int)wParam); ASSERT(pContentItems); AfxMessageBox(pContentItems->m_strText); } break; } return 0; } BOOL CMenuListBoxView::PreCreateWindow(CREATESTRUCT& cs) { if (!CView::PreCreateWindow(cs)) return FALSE; cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; // TODO: Add your specialized code here and/or call the base class return TRUE; }