//--------------------------------------------------------------------------// //--------------------------------------------------------------------------// void CCtlPanel::SetDoc(CAGDoc *pAGDoc) { m_pAGDoc = pAGDoc; AGDOCTYPE DocType = m_pAGDoc->GetDocType(); bool bCardType = (DocType == DOC_CARD_SINGLEFOLD_PORTRAIT || DocType == DOC_CARD_SINGLEFOLD_LANDSCAPE || DocType == DOC_CARD_QUARTERFOLD_PORTRAIT || DocType == DOC_CARD_QUARTERFOLD_LANDSCAPE); int nPages = m_pAGDoc->GetNumPages(); for (int nPage = 1, nMap = 0; nPage <= nPages; nPage++) { CAGPage *pPage = m_pAGDoc->GetPage(nPage); if ((! pPage->IsEmpty()) || (bCardType && nPage == 4)) { const char *pszPageName = pPage->GetPageName(); SetDlgItemText(IDC_PAGE1 + nMap, pszPageName); ::ShowWindow(GetDlgItem(IDC_PAGE1 + nMap), SW_SHOW); m_PageMap[nMap++] = nPage; } } while (nMap < 4) { ::ShowWindow(GetDlgItem(IDC_PAGE1 + nMap), SW_HIDE); m_PageMap[nMap++] = 0; } }
bool CPageNavigator::SelectPage(int nPage, bool bSetState) { if (!m_hWnd || !m_pAGDoc) return false; int nPages = m_pAGDoc->GetNumPages(); if (nPage < 0 || nPage >= nPages) return false; if (m_nPage == nPage) return false; // Reset the image of the old selected page if (m_nPage >= 0) { LV_ITEM lvItem; ::ZeroMemory(&lvItem, sizeof(lvItem)); lvItem.mask = LVIF_IMAGE; lvItem.iItem = m_nPage; GetItem(&lvItem); if (lvItem.iImage >= nPages) { lvItem.mask = LVIF_IMAGE; lvItem.iImage -= nPages; SetItem(&lvItem); } } m_nPage = nPage; // Set the image of the newly selected page if (m_nPage >= 0) { LV_ITEM lvItem; ::ZeroMemory(&lvItem, sizeof(lvItem)); lvItem.mask = LVIF_IMAGE; lvItem.iItem = m_nPage; GetItem(&lvItem); if (lvItem.iImage < nPages) { lvItem.mask = LVIF_IMAGE; lvItem.iImage += nPages; SetItem(&lvItem); } } // Set the page name into the static label control CString strPageName; CAGPage* pPage = m_pAGDoc->GetPage(m_nPage); if (pPage) pPage->GetPageName(strPageName); if (::IsWindow(m_LabelPage.m_hWnd)) m_LabelPage.SetText(strPageName); // Scroll the page into position, if necessary EnsureIconVisible(m_nPage); // Select the list control item if (bSetState) SetItemState(m_nPage, LVIS_SELECTED, LVIS_SELECTED|LVIS_FOCUSED); // Show or hide the next/prev buttons as necessary bool bNormalCard = m_bIsCard && (nPages <= 4); int nCmdShowPrev = (bNormalCard ? SW_HIDE : (nPage <= 0 ? SW_HIDE : SW_SHOW)); int nCmdShowNext = (bNormalCard ? SW_HIDE : (nPage >= nPages - 1 ? SW_HIDE : SW_SHOW)); ::ShowWindow(m_hWndPrevButton, nCmdShowPrev); ::ShowWindow(m_hWndNextButton, nCmdShowNext); return true; }