Ejemplo n.º 1
0
//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
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;
	}
}
Ejemplo n.º 2
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;
}