// IODDlg.cpp : implementation file // #include "stdafx.h" #include "dicomapp.h" #include "IODDlg.h" ///////////////////////////////////////////////////////////////////////////// // CDicomIODDlg dialog CDicomIODDlg::CDicomIODDlg(CWnd* pParent /*=NULL*/) : CDialog(CDicomIODDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDicomIODDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_nPageNumber = 0; m_nPagingIndex = 0; m_nIODIndex = 0; } void CDicomIODDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDicomIODDlg) DDX_Control(pDX, IDC_INFO, m_Info); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDicomIODDlg, CDialog) //{{AFX_MSG_MAP(CDicomIODDlg) ON_NOTIFY(TVN_SELCHANGED, IDC_INFO, OnSelchangedInfo) ON_BN_CLICKED(IDC_BUTTON_NEXT_TEN, OnButtonNextTen) ON_BN_CLICKED(IDC_BUTTON_PREVIUOS_TEN, OnButtonPreviuosTen) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDicomIODDlg message handlers BOOL CDicomIODDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon FillInfo(TVI_ROOT, NULL); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDicomIODDlg::MoveNextPage() { m_nPageNumber++; m_nPagingIndex =0; m_nIODIndex =0; } void CDicomIODDlg::MovePreviousPage() { m_nPageNumber--; if(m_nPageNumber < 0) { m_nPageNumber = 0; } m_nPagingIndex =0; m_nIODIndex =0; } void CDicomIODDlg::FillInfo(HTREEITEM hParentItem, pDICOMIOD pParentIOD) { HTREEITEM hItem; pDICOMIOD pIOD; CString strText; L_BOOL bEmpty = TRUE; if (pParentIOD == NULL) { pIOD = LDicomIOD::GetFirst(NULL, TRUE); } else { pIOD = LDicomIOD::GetChild(pParentIOD); } while (pIOD != NULL) { if(pIOD && (pIOD->nType == IOD_TYPE_CLASS)) { m_nPagingIndex +=1; } if((m_nPagingIndex /10) < m_nPageNumber) { pIOD = LDicomIOD::GetNext(pIOD, TRUE); continue; } bEmpty = FALSE; hItem = m_Info.InsertItem(pIOD->pszName, hParentItem, TVI_LAST); m_Info.SetItemData(hItem, (DWORD)pIOD); if ((pIOD->nType == IOD_TYPE_CLASS) || (pIOD->nType == IOD_TYPE_MODULE)) { m_Info.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD); } if (LDicomIOD::GetChild(pIOD) != NULL) { FillInfo(hItem, pIOD); } pIOD = LDicomIOD::GetNext(pIOD, TRUE); if(pIOD && (pIOD->nType == IOD_TYPE_CLASS)) { m_nIODIndex++; } if(m_nIODIndex >= 10) { break; } } if(bEmpty) { OnButtonPreviuosTen(); } } void CDicomIODDlg::OnSelchangedInfo(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; pDICOMIOD pIOD; CString strText; pIOD = (pDICOMIOD)m_Info.GetItemData(pNMTreeView->itemNew.hItem); if (pIOD != NULL) { strText.Format("%08lX", pIOD->nCode); SetDlgItemText(IDC_CODE, strText); switch (pIOD->nType) { case IOD_TYPE_CLASS: strText = "Class"; break; case IOD_TYPE_MODULE: strText = "Module"; break; case IOD_TYPE_ELEMENT: strText = "Element"; break; } SetDlgItemText(IDC_TYPE, strText); SetDlgItemText(IDC_NAME, pIOD->pszName); switch (pIOD->nUsage) { case IOD_USAGE_M: case IOD_USAGE_1: case IOD_USAGE_2: strText = "Mandatory"; break; case IOD_USAGE_C: case IOD_USAGE_1C: case IOD_USAGE_2C: strText = "Conditional"; break; case IOD_USAGE_U: case IOD_USAGE_3: strText = "Optional"; break; } SetDlgItemText(IDC_USAGE, strText); SetDlgItemText(IDC_DESCRIPTION, pIOD->pszDescription); } *pResult = 0; } void CDicomIODDlg::OnButtonNextTen() { CWaitCursor Wait; CWnd *pWnd = GetDlgItem(IDC_BUTTON_NEXT_TEN); if(pWnd ) { pWnd->EnableWindow(FALSE); } pWnd = GetDlgItem(IDC_BUTTON_PREVIUOS_TEN); if(pWnd ) { pWnd->EnableWindow(FALSE); } m_nPageNumber++; m_nPagingIndex = 0; m_nIODIndex = 0; m_Info.DeleteAllItems(); FillInfo(TVI_ROOT, NULL); m_Info.SelectItem(m_Info.GetRootItem()); pWnd = GetDlgItem(IDC_BUTTON_NEXT_TEN); if(pWnd ) { pWnd->EnableWindow(TRUE); } pWnd = GetDlgItem(IDC_BUTTON_PREVIUOS_TEN); if(pWnd ) { pWnd->EnableWindow(TRUE); } } void CDicomIODDlg::OnButtonPreviuosTen() { CWnd *pWnd = GetDlgItem(IDC_BUTTON_NEXT_TEN); if(pWnd ) { pWnd->EnableWindow(FALSE); } pWnd = GetDlgItem(IDC_BUTTON_PREVIUOS_TEN); if(pWnd ) { pWnd->EnableWindow(FALSE); } m_nPageNumber--; if(m_nPageNumber < 0) m_nPageNumber =0; m_nPagingIndex = 0; m_nIODIndex = 0; m_Info.DeleteAllItems(); FillInfo(TVI_ROOT, NULL); m_Info.SelectItem(m_Info.GetRootItem()); pWnd = GetDlgItem(IDC_BUTTON_NEXT_TEN); if(pWnd ) { pWnd->EnableWindow(TRUE); } pWnd = GetDlgItem(IDC_BUTTON_PREVIUOS_TEN); if(pWnd ) { pWnd->EnableWindow(TRUE); } }